Каковы плюсы и минусы в C ++ Qt против Eclipse RCP для кроссплатформенной разработки графического интерфейса? - PullRequest
18 голосов
/ 06 апреля 2011

Я собираюсь разработать новый графический интерфейс для существующего приложения C ++. Приложение работает в Windows и Linux, а связь с GUI осуществляется через клиент / сервер.

Каковы плюсы и минусы между Eclipse RCP и Qt?

Ответы [ 2 ]

24 голосов
/ 07 апреля 2011

Некоторые плюсы в Qt:

  • C ++ обычно работают лучше;Однако, это спорно
  • Существует множество приложений на базе Qt.
  • Он имеет WYSIWYG конструктор .
  • Подходит для небольших и больших проектов, особенно из-за QtQuick, который позволяет создавать небольшие приложения в кратчайшие сроки и практически без знаний о C ++
  • Qt имеет удивительную оболочку в Python, называемую PyQt (конечно, есть и PySide, который позволяет быстро разрабатывать и создавать прототипы.Из-за этого люди часто используют PyQt (или PySide) для UI-стороны приложения Qt.Конечно, вы можете легко комбинировать Python и Qt в одном приложении, используя все их сильные и слабые стороны.Это обеспечивает относительно быстрые и плавные циклы разработки даже для крупных проектов

Некоторые недостатки Qt:

Некоторые плюсы Eclipse RCP:

  • Eclipse RCP - это гораздо больше, чем графический набор инструментов:

    • Он использует архитектуру на основе плагинов, которая помогает распределять функциональность между различными компонентами (плагинами) и контролировать зависимости между такими компонентами (плагинами),Система плагинов Eclipse опирается на собственную реализацию спецификации системы компонентов Java под названием OSGi .
    • . Она предоставляет механизм для включения расширяемости развязанного приложения, называемый точками расширения .
  • Есть много плагинов Eclipse , которые вы можете использовать в своем приложении, и многие из них имеют лицензии на распространение, дружественные для коммерческих продуктов..

  • Имеет WYSIWYG дизайнер .

Некоторые минусы Eclipse RCP:

  • Eclipse использует собственный оконный инструментарий под названием SWT ;на каждой платформе он опирается на собственный графический слой.В Linux он опирается на Gtk + (хотя также можно использовать Motif), который, по моему опыту ( и другие ), имеет проблемы с производительностью, в основном с виджетами, которые обновляются с высокой скоростью,На самом деле многие из нас встраивают элементы Swing в приложения Eclipse RCP, чтобы преодолеть проблемы с производительностью при сохранении расширяемой архитектуры Eclipse;это, однако, может принести проблем с интеграцией .Есть версия SWT, которая использует Qt в качестве бэкэнда, но ее включение в кодовую базу Eclipse кажется застойным с октября 2010 года .

  • Время запуска (понимается как время, прошедшее с моментаприложение запускается до появления окна) приложений Eclipse RCP может быть очень длинным.

  • Если вы собираетесь интегрировать C ++ с Java с помощью JNI Имейте в виду, что некоторым людям трудно .

  • В Eclipse много и много ошибок. bugzilla Eclipse - очень полезный ресурс для разработчика RCP.

  • Чем больше вы хотите, чтобы внешний вид и поведение приложения Eclipse RCP отличалось от Eclipse IDE, тем больше проблемвы попадете в.

  • Разработка Eclipse RCP, по моему мнению, имеет большую кривую обучения.

  • Использование Eclipse RCP для небольших проектов в основном самоубийство (если вы не ограничиваетесь только созданием плагина или аналогичного). Он предназначен для средних и крупных и очень крупных проектов из-за сложности его инфраструктуры, потребностей в ресурсах и вышеупомянутой крутой кривой обучения.

  • Eclipse RCP не для мобильной разработки, потому что ... это RCP (Rich Client Platform). Если вы хотите стать мобильным, это не для вас.

Обе их лицензии на распространение (LGPL / GPL / коммерческая для Qt, EPL для Eclipse) достаточно гибки для большинства применений, на мой взгляд. Тем не менее, я не юрист, поэтому могу ошибаться.

И, конечно, следует учитывать и другие факторы, такие как опыт разработчиков, их технические навыки, размер команды, конкретные требования и т. Д.

Кстати, у меня большой опыт в Eclipse RCP, но только теоретические знания по Qt, поэтому я могу быть предвзятым / ошибочным в своих высказываниях.

10 голосов
/ 07 апреля 2011

Теперь, когда у Qt есть лицензия LGPL, я выбираю Qt в любой день недели вместо Eclipse RCP.

Я использовал оба для создания довольно сложных приложений.

Поскольку вы можете использовать eclipseПри разработке c ++ я предполагаю, что мы сравниваем в основном swt / jface и Qt, а не саму среду разработки eclipse.

Некоторые вещи, которые я заметил, использовали оба:

1) Qt имеет лучшую документацию и примеры

Кроме некоторых недоделанных примеров в Интернете, я мог бы найти немного полезной документации по затмению.

2) Qt имеетнамного больше «профессиональных» пользователей

Есть много профессиональных компаний, использующих Qt в качестве своей структуры пользовательского интерфейса.Учитывая поддержку трех платформ (Windows, Linux, Mac), она очень гибкая и имеет много поддержки.

3) Qt имеет тенденцию быть более полной и зрелой -

Используя Eclipse, я заметил, что довольно часто доступные элементы управления и пакеты выполнялись только частично, а не полностью.Они, как правило, были разработаны для чьего-либо использования, и только так закодированы.Элементы управления Qt почти всегда были законченными.

4) Стилизация.

Как Qt, так и Eclipse рендерится с использованием библиотек локальной платформы, поэтому ваш пользовательский интерфейс будет «выглядеть» как другиеПользовательский интерфейс на платформе, на которой вы работаете (т.е. Linux против Windows).Тем не менее, Qt также предоставляет довольно сложную функциональность стилей, которая позволяет вам легко изменять внешний вид любого элемента управления и дает вам гораздо больше контроля над внешним видом вашего приложения.

С новым декларативным языком (Qt 4.7. *) вы приближаетесь к уровню управления WPF, что действительно потрясающе.

5) UI Designer:

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

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

6) Взаимодействие с существующим исходным кодом

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

7) Библиотеки чертежей

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

8) Модели дерева и списка

Eclipse предоставляет некоторые полезные готовые функциональные возможности для распространения данных вдеревья, списки и прочее.Это почти так же хорошо в Qt, хотя и немного сложнее в настройке.

9) Макет приложения

Eclipse предоставляет некоторые приятные функциональные возможности для управления представлениями (панели док-станций)) и «перспективы» (рабочие процессы), которые, если вы решите использовать их, сделают жизнь приятной и легкой.Qt требует, чтобы вы сделали это самостоятельно.Qt обладает функциональностью панели док-станции, но при создании многофункционального приложения вы должны настроить это самостоятельно.

Дополнительное примечание:

Qt также предоставил некоторые дополнительные библиотеки для поддержки таких вещей, как xml и т. Д.... Так что это помогает немного сократить разрыв между c ++ и java для таких вещей.

...