Привязки языка Gtk + vs Qt - PullRequest
9 голосов
/ 11 мая 2010

Вкратце: для тех, кто знаком с языковыми привязками в Qt и Gtk +. Например. питон и рубин. Есть ли разница в качестве или возможностях?

Дополнительные сведения: я очень хорошо знаю C ++ и Qt. Минимальный опыт работы с Gtk +. Я знаю, что C ++ не идеален для языковых привязок из-за отсутствия четко определенного ABI (двоичного интерфейса приложения). Я также читал, что Gtk + был разработан для привязки к другим языкам. Поэтому мне интересно, как это манифестирует себя на практике. Связи Gtk + лучше поддерживаются или работают лучше, чем их аналоги из Qt?

В настоящее время я довольно заинтересован в языке Go, и они начали разрабатывать привязки Gtk +. Однако привязки C ++ далеко. Это заставляет меня задуматься, стоит ли изучать Gtk +.

Ответы [ 5 ]

9 голосов
/ 12 мая 2010

Я достаточно широко использовал GTK и Qt в C ++, а также PyGTK и PyQt в Python.

Qt опережает GTK - это гораздо более гибкий, современный и чистый API. GTK также не хватает некоторых функций, которые важны для меня. С точки зрения фреймворка, я бы порекомендовал Qt.

Что касается языковых привязок (я могу говорить только о Python, поскольку я никогда не использовал эквиваленты Ruby), я думаю, что PyGTK (использующий Glade и обертку типа Padraig Bradys libglade ) делает программирование GUI безумным легко и весело. Однако, если вы можете использовать GPL для своего программного обеспечения (или оплатить лицензионный сбор), то PyQt также является хорошим вариантом, и, хотя он не так дружелюбен, как PyGTK + Glade (в этом случае с GTK вы можете определить свой пользовательский интерфейс в Glade как отдельный XML файл, так что вы можете настроить интерфейс, не касаясь кода; в Qt, если вы хотите использовать QtDesigner, вы должны генерировать код, используя uic, если я правильно помню), сам API действительно очень удобно использовать и отражает чистый дизайн фреймворков Qt очень тесно.

В целом, я бы, вероятно, рекомендовал использовать PyQt вместо PyGTK, но я могу быть предвзятым, поскольку в настоящее время я гораздо больше предпочитаю Qt, чем GTK, хотя вы можете попробовать оба варианта и посмотреть, что вам больше по душе - они оба почти тривиальны, чтобы начать работать .

Если вы ищете отличную книгу по PyQt, я бы порекомендовал Быстрое программирование GUI с Python и Qt .

Подводя итог: IMHO Qt превосходит GTK как по качеству, так и по возможностям. Как PyGTK, так и PyQt имеют превосходное качество и возможности, отражающие базовую платформу, хотя PyGTK может загружать XML-файлы Glade.

2 голосов
/ 11 мая 2010

Я думаю, что привязки GTK старше, чем Qt (и, следовательно, немного более зрелые), но они оба пригодны для использования, и ваши предыдущие знания Qt должны быть основным фактором вашего выбора.

Я разработал небольшие графические интерфейсы с использованием Qt и GTK с их привязками Python и нашел два эквивалента. Однако некоторые сожалеют о привязках PyQt с контейнером Qt (QVector, ...), которые не переведены в обычную структуру данных Python и, таким образом, вносят некоторую сложность в код. Я не вспомнил те же проблемы с использованием PyGTK.

1 голос
/ 11 августа 2011

Я пробовал несколько комбинаций вокруг Qt: RubyQt, JRuby + Jambi, PyQt. Первый быстро заканчивается различными ошибками сегментации. Мои навыки Qt могут быть проблемой, но в целом ошибки сегмента не совсем читабельны. Форум для RubyQt почти мертв, поэтому не ожидайте, что найдете там много информации.

Итак, я перешел на JRuby + Jambi. Это работало до тех пор, пока я не достиг некоторых недостающих функций. Плюс мне пришлось реализовать правильный сигнал / соединение для JRuby. Итак, более или менее взломать. Не убедительно.

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

Обратите внимание, что я пробовал эти комбинации, чтобы найти правильный язык / привязку qt, чтобы я мог создать производство, готовое к моим часам коммутации (примерно 2 часа в день). Так что моя терпимость к небольшим, но раздражающим проблемам, таким как ошибки сегментации, равна 0. Я также должен разрабатывать на Windows и Linux. Таким образом, установка Windows необходима (и снова Python здесь явный победитель).

1 голос
/ 11 мая 2010

Я работал как с PyQt, так и с PyGTK, и я бы сказал, что они оба регулярно обслуживаются и синхронизируются со своими родительскими платформами. Однако, и это совершенно субъективно, я нашел более полезной работу с PyGTK, чем с PyQt, даже если раньше я не писал никакого кода с использованием GTK. Если вы хорошо знаете Qt, продолжайте с Qt.

0 голосов
/ 11 мая 2010

есть привязки C ++ gtk +. Google для gtkmm.

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