Самый простой способ добавить графический интерфейс в приложение C ++ - PullRequest
7 голосов
/ 04 июня 2011

Я занимаюсь производством кускового программного обеспечения на C ++ и хочу добавить графический интерфейс (в основном для Windows). Я знаю, как создавать графические интерфейсы с использованием удобных редакторов на современных языках, таких как Java или .NET. Теперь мой вопрос заключается в том, какой самый простой и удобный способ добавить графический интерфейс GUI для моей программы. При выборе инструментов я полностью свободен (открытый код и переносимость были бы хорошими), но, пожалуйста, имейте в виду, сколько стандартного кода и интерфейсов необходимо поддерживать, если графический интерфейс реализован на другом языке (как C #) .

Пожалуйста, не предлагайте переключать весь проект с C ++! И обратите внимание, что программа не требует большого взаимодействия между кодом C ++ и графическим интерфейсом.

Ответы [ 8 ]

6 голосов
/ 04 июня 2011

Qt - достойный выбор.Он стабилен, имеет прекрасный интерфейс C ++ (в отличие от MFC) и имеет удобный инструмент конструктора.
Однако затраты на его изучение с нуля могут быть больше, чем вы готовы инвестировать.У него есть определенная кривая обучения.

6 голосов
/ 06 июня 2011

Заявления об ISO C ++ в комментариях к этому ответу плохо отредактированы.Ни одно из представленных здесь решений не навязывает вычислительному коду требование перехода на другой диалект C ++.Сам код GUI может быть другой историей.

Ответы об использовании Windows Forms с управляемым C ++, вероятно, наиболее практичны.Большая часть кода, относящегося к пользовательскому интерфейсу, была бы на диалекте (расширении) C ++, где указатели .NET-сборщика мусора будут жить рядом с традиционными указателями ISO C ++.Я не использовал этот метод, но из того, что я прочитал, он может быть лучше, чем тот, который я использовал.

MFC может быть более практичным, если вы не хотите вкладывать средства в знания .NET для этой задачи.Он использует стандартные конструкции C ++ для переноса Windows API.Windows API использует определенное соглашение о вызовах, которое C ++ обычно не использует, и для работы с ним требуется расширение C ++, но это ничем не отличается от наличия программы C ++, которая вызывает некоторые функции, которые являются внешними "C".В Visual Studio есть инструмент компоновки графического интерфейса, который действительно хорош для компоновки диалогов и сопряжения виджетов диалогов с переменными, которые отражают состояние виджетов.Я использовал это.Если вы можете свести графический интерфейс пользователя к диалоговому окну, это было бы отличным вариантом, в противном случае вы бы использовали одно из управляемых макетом окон MFC.

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

Существуют также различные наборы инструментов, которые были созданы на других платформах и были прилично перенесены на Windows.На ум приходят GTK, QT, FLTK и WxWindows.Я не использовал ни один из инструментов макета диалога / дизайнера приложений, которые работают с ними, и я вообще не использовал QT.Когда я в последний раз проверял QT, у него был специальный проход предварительной обработки для кода GUI.Кроме того, насколько я знаю, эти портативные наборы инструментов являются чистым ISO C ++.

В качестве реально существующего варианта можно программировать для протокола X Window System с использованием "libx".Насколько я знаю, это не связано с кодом C ++, отличным от ISO.

4 голосов
/ 04 июня 2011

wxWidgets будет хорошим выбором для кроссплатформенного графического интерфейса для C ++

3 голосов
/ 04 июня 2011

Столько, сколько я люблю C ++, трудно создать графический интерфейс. Я бы создал быстрое приложение C # WinForms, которое позволяло бы вам использовать такие вещи, как визуальные дизайнеры Visual Studio (кнопки перетаскивания и т. Д.), И вызывало ваше приложение C ++ с помощью P / Invoke.

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

1 голос
/ 07 июня 2011

Я должен посмеяться над всеми способами убрать шкуру с этой кошки. Жизнь хороша. Мой ответ - продукт, которым я управляю. XVT может сделать это за вас. Самый простой способ - позволить нам сделать это за вас или предоставить вам шаблон. Это просто вопрос, если у вас больше денег, чем времени. Тогда я посмотрю на нас. Это будет самое быстрое и наименьшее количество усилий с вашей стороны.

1 голос
/ 04 июня 2011

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

0 голосов
/ 04 июня 2011

В зависимости от того, что вам нужно, Микко предлагает хороший imgui, который вы можете просто подключить и использовать довольно быстро. Это сделано в opengl, поэтому это не будет ваш стандартный Windows-GUI, но он очень маленький и с ним легко работать. Вы можете скачать версию r'lyeh здесь: http://code.google.com/p/colony9/source/browse/include/goo/imgui.h.

Это самый простой и удобный способ, который я знаю, хотя он зависит от SDL.

0 голосов
/ 04 июня 2011

Приложение на основе диалога MFC может удовлетворить потребности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...