Intereting Posts
Как я могу читать данные float с помощью glReadPixels Где поместить перечисление в программу cpp? Как использовать алгоритм SIFT с инвертированным изображением цвета Двойное сравнение Безопасно ли использовать int для удаления указателя и обратно в int? Наличие статической строки constexpr дает ошибку компоновщика элегантный способ удалить все элементы вектора, которые содержатся в другом векторе? C ++ Boost: инициализация конечной точки после создания Является ли время жизни исключения зависящим от вложенных обработчиков? Преобразование classа C ++ в C-структуру (и далее) Сериализация сложных структур в C ++ Инициализация по умолчанию в сравнении с нулевой инициализацией Как эффективно умножить диапазон значений массива с заданным числом? проблемы с запуском exe-файла, созданного с помощью Visual Studio на другом компьютере Как сделать канал в c ++

Gui toolkits, который я должен использовать?

Я пишу довольно крупную и сложную программу анализа данных, и я дошел до того, что, думаю, пришло время создать графический интерфейс для программы. Поэтому мой вопрос:

Какой инструментарий GUI я должен использовать?

Я совершенно новичок в кодировании и создании графических интерфейсов, и буду благодарен за любые рекомендации, которые могут быть предложены. Это не должен быть самый простой набор инструментов в мире, я учился довольно быстро. Тем не менее, он должен иметь возможность делать следующие вещи (некоторые, если не все из них, вероятно, невероятно базовые для любого данного инструментария, но я думал, что было бы неплохо выбросить все это на всякий случай).

Это должно позволить мне рисовать непосредственно на экране, чтобы я мог поместить графики (спектры на самом деле), графики и все, что им нравится, чтобы пользователь мог видеть. Мне нужно иметь возможность собирать информацию о местоположении, где они нажимали на вышеупомянутые спектры. Мне нужно иметь возможность отображать текст и вводить текстовый ввод от пользователя. Он должен иметь возможность создавать меню (вы знаете «Файл», «Редактировать» и т. Д.). Если бы у него был встроенный виджет для генерации таблиц, который был бы удобен (хотя я могу преодолеть недостаток этого, если я могу рисовать непосредственно на экране). Он должен иметь возможность всплывать предупреждения, диалоговые windows, сохранять и открывать коробки и т. Д. Это почти все, большинство из них кажутся довольно простыми, когда я их выписываю, но я не хочу, чтобы GUI был частично закодирован и затем осознайте, что мне нужно переписать его с помощью другого инструментария.

Следует отметить, что я написал эту программу на C ++ и что я не хочу писать часть GUI на C или что-то еще, поэтому инструментарий должен поддерживать C ++.

Кроме того, кросс-платформенный инструментарий был бы предпочтительнее одного инструментария платформы. Однако, если это должен быть единственный инструментарий для платформы, я бы предпочел, чтобы он был для Linux.

Наконец, я бы DRAMATICALLY предпочитал инструментарий с открытым исходным кодом для инструментария с закрытым исходным кодом.

Кроме того, я не могу придумать ничего, чтобы добавить. Заранее благодарю за ваше время и ответы.

Хммм, основываясь на ответах, я рассмотрю как Qt, так и wxWidgets и посмотрю, какие призывы ко мне больше. Я с тем, что принимаю несколько ответов, но не могу, и поскольку я смотрю на две вещи, было бы несправедливо принимать только один из ответов, возможно, через неделю или две, тогда я посмотрел на инструментальные средства и понял который я хочу использовать.

Для C ++, на мой взгляд, Qt является наименее расстраивающим и наиболее полнофункциональным инструментарием. Его также полностью перекрестная платформа. Обратите внимание, что Qt будет лицензироваться LGPL некоторое время в марте 2009 года, когда версия 4.5 станет доступной. В настоящее время он доступен только в версии GPL и коммерческой лицензии.

Дизайнер GUI Qt хорош. Он имеет множество функций утилиты (библиотека графа сцены, поддержка перевода, встроенный механизм Javascript, встроенная библиотека WebKit). Через MOC (специальный предварительный компилятор) он также предоставляет несколько возможностей привязки во время выполнения и интроспекцию на C ++.

Для вашего технического приложения вы можете обнаружить, что Qwt ( http://qwt.sourceforge.net/ ) предоставляет то, что вам нужно. Он построен на Qt.

Qt можно даже использовать «без головы», если вы хотите, чтобы его утилита (например, сеть и т. Д.) Не имела графического интерфейса.

Другой вариант кросс-платформенной C ++ – wxWidgets, который можно использовать, но не очень сопоставим с Qt. Его набор инструментов с более низким уровнем и не так прост в использовании или полностью округлен. Gtkmm – еще один вариант, в духе GTK +.

Попробуйте WxWidgets. Кросс-платформа (компиляция на Linux, Mac OS X и Windows) и широко принята.

http://www.wxwidgets.org/

С открытым исходным кодом тоже!

Я вижу, никто не комментировал GTKmm . Это воплощение C ++ для GTK +, и это очень приятно использовать. Я также использовал Qt, но мне не нравится беспорядочный сигнал / код подключения, генерируемые файлы moc_XXX и т. Д. GTKmm имеет сигналы и т. Д., Но не этот шаг предварительной обработки, а также почти весь набор инструментов Qt может предложить в графическая арена.

Я бы сказал, что это зависит от того, хотите ли вы использовать внешний вид Look and Feel для ОС, которые вы настраиваете для своего приложения. Qt, как было сказано ранее, является, пожалуй, самым легким из кроссплатформенных наборов инструментов, но это его собственный набор виджета. Вы не получаете внешний вид и внешний вид приложения, если только вы не работаете в KDE.

Я использую wxWidgets на работе. Иногда это может расстраивать, а в некоторых местах не очень отполировано, но оно дает внешний вид и ориентацию на платформы, на которые вы нацеливаетесь. Он фактически обертывает собственные элементы пользовательского интерфейса, чтобы предоставить им общий API на всех платформах, к которым переносится wxWidgets.

У меня был такой же вопрос, и я искал хорошие инструменты для графического интерфейса.

В конце я узнал, что инструментария GUI недостаточно – мне нужно полное независимое от платформы решение, обеспечивающее мне среду сборки, интеграцию IDE и более низкие функции уровня, такие как сетевые сокеты и ввод-вывод файлов.

Мой результат? Поскольку почти 9 лет я использую Qt (но первые годы только для GUI), теперь у меня очень сложные сетевые приложения с балансировкой нагрузки, массивной многоstreamовой обработкой и обработкой изображений.

Вы можете использовать Qt как коммерческий пользователь с профессиональной поддержкой (например, я) или просто начинать свои проекты под GPL и с 4.5 с помощью LGPL (что позволяет коммерческое использование).

Другие альтернативы, такие как wxWidgets и GTK ++, являются очень хорошим выбором для программирования графического интерфейса.

Но если вы хотите хорошо документированное и полное решение, то Qt – ваш выбор.

С наилучшими пожеланиями, 3DH

Я также рекомендую wxWidgets вместе с DialogBlocks , который является действительно красивым визуальным графическим дизайнером .

Я скажу, что wxWidgets имеет несколько грубых краев, но сообщество разработчиков очень активно реагирует на сообщения об ошибках / вопросы / вклады.

Qt . Также вы можете использовать KDE, который построен поверх Qt.

Я использую wxWidgets (toolkit) + wxFormBuilder (gui-designer) + eclipse (ide). Все инструменты являются кросс-платформенными и бесплатными.