Наборы инструментов Gui, что мне следует использовать?

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

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

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

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

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

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

Наконец, я бы ДРАМАТИЧЕСКИ предпочел инструментарий с открытым исходным кодом набору инструментов с закрытым исходным кодом.

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

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

Ответов (8)

Решение

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

Дизайнер графического интерфейса 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/

Открытый исходный код тоже!

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

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

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

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

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

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

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

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

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

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

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

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

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

С уважением, 3DH