Что мне выбрать: GTK + или Qt?

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

Я читал о них и думал начать учиться/использовать один из них.

Что является наиболее распространенным? Какая разница между ними? Почему вы выбираете один за другим?

Ответ 1

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

Если вы кодируете на C, то, очевидно, переходите к GTK+

Если вы кодируете в C++, переходите к Qt, в противном случае вам понадобится Gtkmm (оболочка C++ поверх GTK+)

Если вы пишете код на Python, то и GTK+, и Qt имеют привязки к языку: см. PyGtk, PyQt и PySide (тот, который был запущен самими Nokia).

Если вы пишете код на Java, Qt больше не является жизнеспособным вариантом imho, так как Nokia прекратила Qt Jambi (привязки Java для Qt).

Кроме того, Qt является более высококлассным в отношении API QGraphicsScene сцены, его механизма сценариев, построенного на основе Javascript Core (движок, обеспечивающий WebKit), его механизма состояний и анимации, а также декларативного интерфейса пользователя.

GTK+ не предлагает так много, хотя вы можете использовать Clutter вместе с ним.

Если вы специально изучаете DB, XML (GTK+ имеет синтаксический анализатор для подмножества XML) и функции потоков (GTK+ имеет GLib), тогда Qt предложит все это в QtSql, QtXml и QtConcurrent.

В целом, я бы сказал, что Qt - верный выбор. Но GTK+ тоже очень способен.

Я не уверен, что вы получите кристально чистый ответ на свой вопрос, который объясняет, почему некоторые люди предпочитают Gnome, а не KDE или наоборот. Выберите то, что работает лучше для вас.

PS: я планирую также нацелиться на Symbian, а затем перейти на Qt.

РЕДАКТИРОВАТЬ: QtWebView также хорошо работает с Qt: он QtWebView Chromium в ваше приложение Qt для отображения веб-контента. Другие встраивают веб-контент в свои приложения, используя, например, Awesomium или Berkelium.

Ответ 2

Я использовал GTK +, QT и wxWidgets раньше. Вот краткое резюме:

Для моего первого проекта платформы кросс-платформы я решил пойти на wxWidgets главным образом потому, что в то время, когда лицензия была не такой ограничительной, как QT (QT был GPL и только для Linux), и у нее был специфичный для платформы интерфейс (в отличие от GTK). Проект проработал хорошо, но было довольно много сбоев, чтобы заставить его правильно компилироваться и работать на других платформах - иногда некоторые события запускались по-разному и тому подобное. Также GDI в wxWidgets был довольно медленным.

Далее я использовал GTK для другого проекта в python. Для этого я использовал привязки python, и все получилось более или менее гладко. Мне не очень понравился тот факт, что пользовательский интерфейс не выглядел родным для Windows и Mac, а также при запуске приложения GTK + он всегда отлаживает выходы нагрузок критических предупреждений, которые кажутся прекрасными для игнорирования.: S

Наконец, я сделал очень простой проект QT, когда Nokia приобрела его и была блестящей. Лучший из трех. Во-первых, если вы не старый школьник, предпочитающий VI или Emacs, QtCreator блестящий. Я действительно люблю VI и использовал его в течение многих лет, но я предпочитаю QtCreator для проектов Q ++ QT. Что касается библиотеки, мне также очень понравилась документация и предоставленные API. QT имеет концепцию слотов и сигналов, которые вводят новые ключевые слова С++ и препроцессор. В принципе, после прочтения учебника вы получите его легко и начнете его любить. Теперь я делаю iPhone dev, и он немного похож на парадигму интерфейса Cocoa/Interface Builder.

Резюме: Я бы пошел на QT руки вниз. Лицензия довольно хорошая, и SDK и документация очень приятные.

Ответ 3

Я никогда не использовал GTK, но из моего личного опыта использования Qt:

Это гораздо больше, чем простой графический интерфейс. Это целая прикладная среда. Раньше я думал об этом как о библиотеках Java для C++. Он предоставляет все, что вы упомянули - базу данных, XML, сеть и многопоточность и многое другое. Он также предоставляет такие вещи, как контейнеры и итераторы, а также аналоги ряда библиотек надстройки.

Когда я начал использовать Qt, меня больше всего поразила чрезвычайно обширная документация. Вы получаете программу Qt Assistant, которая предоставляет на ваш рабочий стол полностью проиндексированную и доступную для поиска документацию API, а также многочисленные примеры кода и учебные пособия. Я обнаружил, что каждый раз для поиска информации об API имеет большое значение поиск в Интернете. Очень быстрый доступ, когда вам нужно запомнить сигнатуру метода.

Я не уверен, что является наиболее распространенным; это, вероятно, трудно измерить точно. Они, безусловно, оба популярны. Поскольку Gnome является рабочим столом Ubuntu по умолчанию, а Gnome располагается поверх GTK, он, очевидно, широко используется. Конечно, KDE также очень популярен. Nokia активно продвигает Qt в мобильном пространстве - их операционная система Maemo, используемая, например, на новом N900, скоро перейдет на Qt в качестве набора инструментов по умолчанию (в настоящее время это GTK.) Я считаю, что Qt также скоро станет набором инструментов по умолчанию для Symbian OS.

Я не использовал Qt Creator, но слышал много хорошего об этом. Это C++ IDE с очевидной интенсивной интеграцией с Qt. Он также имеет поддельную эмуляцию vim, которая всегда хороша, если вам нравятся такие вещи!

Qt использует qmake для конфигурации сборки. Я нашел это намного приятнее, чем писать свои собственные make файлы. Я не знаю, что GTK использует для строительства.

Поначалу я обнаружил, что с Qt немного не очень удобно использовать макросы препроцессора. Система сигналов/слотов обеспечивает хороший механизм для передачи событий/сообщений в вашем приложении, но она немного напоминает магию, которая может быть нелегко перенести в другой инструментарий, если вы захотите. Кроме того, moc (мета-объектный компилятор), хотя я не совсем уверен, что он делает, также ощущается слишком похоже на магию, происходящую за кулисами.

В общем, я бы порекомендовал Qt, особенно если вы учитесь. У него действительно потрясающая документация, отличная IDE и насыщенные форумы. С его помощью вы сможете очень быстро создавать приложения C++, особенно с выходом QML 4.7.

Ответ 4

Вероятно, это зависит от того, что вы хотите сделать. Я бы порекомендовал Qt, потому что это больше, чем GUI, он имеет хорошие привязки Python (так же Gtk), и сами библиотеки GUI (субъективно говоря) более приятны, чем Gtk.

Gtk, с другой стороны, более распространен в мире Linux, поэтому вы можете получить дополнительную помощь в Интернете. Причина широко распространенного Gtk, вероятно, больше связана с Gnome и Ubuntu, а не с техническими достоинствами, но если вы хотите, чтобы ваше программное обеспечение хорошо сочеталось с этими двумя, вы легко достигнете этого с помощью Gtk.

Ответ 5

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

Я бы рекомендовал его по GTK +.

Ответ 6

Просто добавив преимущества QT к другим ответам. QT имеет отличную документацию, собственный создатель IDE и GUI и улучшает С++ с некоторыми новыми концепциями как слоты/сигналы (в основном события).

Я не разработчик GTK, поэтому я не могу сравнить их с GTK-миром: (

Ответ 7

Qt. Он не только ориентирован на объект, но и является "хорошим" объектом. Он основан на "подмножестве" С++, который не полагается на неясность С++ (но вам разрешено придерживаться их, если вы представляете мазохизм;)).

Теперь у Nokia появился мощный импульс, и Nokia купила ее (на самом деле Nokia уже 2/3 года назад). Это будет во всех мобильных устройствах Nokia и Intel (смартфоны, нетбуки, планшеты).

Это основа KDE, поэтому она очень зрелая, но она разработана очень гибко, что позволяет поддерживать СЕГОДНЯ все последние "классные вещи", что больше, чем просто GUI должны иметь.

Пойдите для этого.

Ответ 8

Также похоже, что Nokia собирается использовать Qt везде, как на Maemo

Ответ 9

Если вы хотите, чтобы ваше приложение запускалось на iOS, Android, Blackberry, других мобильных платформах, Windows, Mac OSX и Linux, используйте Qt.

qt-project.org