В настоящее время я занимаюсь разработкой инструмента с существующим большим кодом C ++. В настоящее время я думаю об использовании дизайна модель-представление-контроллер (MVC). Модель должна содержать весь код C ++. Представление — это то, что видит пользователь, а контроллер — это, по сути, связующее звено между моделью и представлением.
Особенности, которые я ищу:
Сейчас я нашел 3 решения:
У меня есть некоторый опыт работы с Java Swing и почти нет опыта работы с QT и GTKmm.
Итак, что является лучшим решением для создания графического интерфейса, когда у меня уже есть существующий код C ++ в качестве неопытного разработчика интерфейса?
Из ваших трех вариантов я бы определенно выбрал Qt.
В основном, чтобы Qt был функциональным графическим интерфейсом, вам нужно запустить QApplication
, show()
какой-то виджет, а затем запустить цикл событий для приложения (QApplication::exec()
).
http://qt-project.org/doc/qt-4.8/qapplication.html
http://qt-project.org/doc/qt-4.8/qapplication.html#exec
Qt чрезвычайно гибок и хорошо продуман, и у него есть сильные последователи. И у него есть невероятная документация.
Чтобы взаимодействовать с вашими существующими структурами данных C ++, просто создайте их как переменную-член в качестве одного из основных виджетов, которые у вас есть для вашего GUI. Затем, когда вы хотите получить доступ и отобразить информацию о нем, это просто кусок пирога.
http://qt-project.org/doc/qt-4.8/qwidget.html
http://qt-project.org/doc/qt-4.8/qmainwindow.html
Большинство элементов графического интерфейса в Qt действуют только как представление, и нет никаких определенных настроек модели и контроллера. Это остается за разработчиком. Если вы отображаете базу данных или дерево или сетку элементов, есть модель / вид потока, но я не думаю, что это относится к вашему заявлению.
Понимание и использование SIGNALS и SLOTS очень важно для создания интерактивного графического интерфейса в Qt и очень безболезненно.
http://qt-project.org/doc/qt-4.8/signalsandslots.html
http://qt-project.org/doc/qt-4.8/qobject.html#details
Читая о различных видах QWidget, вы сможете найти каждый из элементов, перечисленных в вашем вопросе.
Вот некоторые из них, на которые вы должны обратить внимание:
http://qt-project.org/doc/qt-4.8/qtextstream.html
http://qt-project.org/doc/qt-4.8/qtextedit.html
http://qt-project.org/doc/qt-4.8/qlineedit.html
http://qt-project.org/doc/qt-4.8/qlabel.html
И, конечно же, посмотрите учебники и примеры, которые поставляются с Qt.
Как использовать GNUPlot с Qt
http://lists.trolltech.com/qt-interest/2002-12/thread00068-0.html
Кроме того, как разработчик, который использовал Qt Creator и Eclipse, я предпочитаю Qt Creator, и перенос проекта для работы в Qt Creator очень прост. Если вы хотите изменить цепочку сборки Eclipse для использования библиотек Qt и QMake, это тоже возможно.
http://qt-project.org/doc/qt-4.8/qmake-project-files.html
http://qt-project.org/doc/qt-4.8/qmake-project-files.html#declaring-other-libraries
http://therning.org/magnus/archives/1023
Я надеюсь, что это полезно. Удачи.
Других решений пока нет …