Инструменты графического интерфейса, какие мне следует использовать?

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

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

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

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

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

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

Наконец, я бы СТРЕМИТЕЛЬНО предпочел набор инструментов с открытым исходным кодом набору инструментов с закрытым исходным кодом.

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

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


person James Matta    schedule 25.02.2009    source источник


Ответы (8)


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

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

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

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

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

person Yann Ramin    schedule 25.02.2009
comment
Есть еще один вариант C++: FLTK. По общему признанию, он ориентирован на приложения OpenGL, но это полнофункциональный C++ GUI API и находится под измененным LGPL (с исключением статической компоновки). - person greyfade; 25.02.2009
comment
Я поддерживаю предложение Qt. По моему опыту, Qt — это самый качественный кроссплатформенный инструментарий с графическим интерфейсом. - person Matthew Olenik; 26.02.2009

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

http://www.wxwidgets.org/

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

person Zoasterboy    schedule 25.02.2009

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

person Diego Sevilla    schedule 25.02.2009
comment
Не говоря уже о том, что Gtk более распространен в Linux, поэтому пользователи привыкнут к внешнему виду вашего приложения. - person Lalaland; 21.02.2011
comment
При использовании CMake материал «moc» обрабатывается автоматически и без необходимости какого-либо управления со стороны пользователя. - person antonone; 07.11.2016

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

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

person Grant Limberg    schedule 25.02.2009
comment
Внешний вид Qt на платформах был заметно улучшен с точки зрения гармонии с рабочим столом. В Windows это действительно выглядит как приложение Windows. То же самое с OS X, строкой меню приложения и всем остальным. - person Yann Ramin; 25.02.2009
comment
Хотя это правда, вы все равно в конечном итоге используете разные наборы классов для целей Windows и целей Mac. Из QMacStyle для OS X и из QWindowsXPStyle для Windows, тогда как wxWidgets имеет единый API для всех платформ. - person Grant Limberg; 25.02.2009
comment
Я думаю, вы неправильно понимаете, как работают стили в Qt. Фактический API идентичен, движок стилей — это отдельный компонент, который часто даже не нужно трогать. Единственным случаем обработки особого поведения является стилизация ваших собственных рисованных виджетов, что wx также не обрабатывает. - person Yann Ramin; 25.02.2009

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

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

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

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

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

Но если вам нужно хорошо документированное и законченное решение, тогда Qt — ваш выбор.

С уважением, 3ДХ.

person 3DH    schedule 25.02.2009

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

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

person Gian Paolo    schedule 25.02.2009

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

person David Z    schedule 25.02.2009
comment
Может быть, это глупый вопрос, но разве KDE не только для Linux? - person James Matta; 03.07.2012
comment
Совсем не глупый вопрос ;-) KDE в основном используется в Linux, но вы можете написать приложение, используя библиотеки KDE, и в принципе ничто не мешает ему работать в Windows. - person David Z; 03.07.2012

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

person fat    schedule 09.12.2011