В чем разница между приложениями GTK и QT?

В чем разница между приложениями GTK и QT?

Многие пакеты доступны как в версиях GTK, так и QT.

  • В чем разница между ними?
  • Есть ли разница в производительности или методе работы?

решение1

В целом, разница с точки зрения пользователя должна быть чисто косметической. Qt и GTK устанавливают темы независимо (через, например, qtconfigили gtk-chtheme), но это гармонизируется некоторыми средами рабочего стола.

GNU/Linux, как правило, больше ориентирован на GTK, чем на Qt, в том смысле, что первый используется чаще, поэтому вы можете предпочесть его, если у вас есть выбор; исключением может быть KDE, который использует Qt для своих собственных приложений, хотя ни один из этих факторов не является особо важным.

Более существенная проблема может возникнуть в условиях очень ограниченного объема оперативной памяти (например, < 1/4 ГБ); в этом случае вам, вероятно, захочется, чтобы система использовала исключительно GTK.илиQt, но не оба. Однако на большинстве современных настольных компьютеров с гигабайтами памяти это не проблема — интенсивное использование обоих может обойтись вам в дополнительные (дикие догадки) 50-100 МБ.


Обратите внимание, что существуют также различные версии GTK (2 и 3) и Qt (3 и 4), которые все еще широко используются, но не имеют обратной совместимости (поэтому приложение Qt 3 не может использовать библиотеки Qt 4). Однако обе версии могут существовать в системе одновременно, и наиболее серьезным последствием этого будет потенциальная путаница и немного большее раздувание памяти.

решение2

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

Когда пишется графическая (GUI) программа, сначала разрабатывается ее ядро. Это то, что заставляет программу работать. Вы никогдавидетьядро, они просто выполняются в фоновом режиме. Поверх этого ядра разработан пользовательский интерфейс (UI).

Теперь разработчики могли бы спроектировать весь интерфейс с нуля или повторно использовать дизайны, созданные другими. Повторное использование дизайна имеет большое преимущество. Оно позволяет всем программам на вашем компьютере выглядеть одинаково. Следовательно, они используют наборы инструментов GUI. GTK и Qt — два чрезвычайно распространенных набора инструментов GUI.

GTK — стандартный набор инструментов для GNOME, а Qt используется KDE. С точки зрения пользователя, отличается только внешний вид. Программа остается прежней по сути.

решение3

Другим важным аспектом, который следует учитывать, является лицензирование Qt.ссылка на раскрытие их лицензиикоторый явно установлен для свободного доступа для большинства некоммерческих проектов, но коммерческие отношения возможны и могут иметь ограничения для этого случая. В то время как GTK, прямо заявляет, что его можно использовать свободно даже взапатентованныйПриложенияЗаявление ГТК:

Are there any licensing restrictions?
GTK is free software and part of the GNU Project. However, the licensing terms for GTK, the GNU LGPL, allow it to be used by all developers, including those developing proprietary software, without any license fees or royalties. 

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

решение4

Как они сравниваются в отношении соответствующих объектных моделей и насколько близко они следуют стандарту C++ — по моему ограниченному опыту, QT показался мне немного хакерским со своими генераторами кода и изобретением колеса с собственными функционально эквивалентными классами для строк и классов. Короче говоря, QT, похоже, имел больше свистков и колокольчиков, которые, я уверен, многие сочли полезными, но также он, похоже, имел тяжелое, фирменное ощущение. Как я уже сказал, у меня был ограниченный опыт работы с ним (и еще меньше с Gtk). Я хотел бы услышать мнения о том, как они сравниваются сегодня — с точки зрения разработчика, который склоняется к общим подходам к вещам, которые пытаются использовать стандарты C++ (такие как STL, строки C++, потоки и т. д.)

Связанный контент