Что я должен выбрать: GTK+ или Qt? [закрытый]



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



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



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

903   9  

9 ответов:

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

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

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

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

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

кроме того, Qt является более первоклассным в отношении его scenegraph QGraphicsScene API, его скриптовый движок, построенный на ядре Javascript (движок, питающий WebKit), его фреймворк state machine и animations и декларативный интерфейс.

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

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

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

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

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

EDIT: что-то, что также отлично подходит для Qt, - это QtWebKit: он приносит WebKit в ваше приложение Qt. Другие встраивают WebKit в свое приложение, используя, например, Awesomium или Berkelium.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

это костяк KDE, поэтому он очень зрелый, но он разработан в a очень гибкий способ, что позволяет поддерживать сегодня все последние "крутые вещи", которые more-then-just-GUI база должна быть.

вперед.

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

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

qt-project.org

Comments

    Ничего не найдено.