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

54

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

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

Ответы:

41

В общем, разница с точки зрения пользователя должна быть чисто косметической. 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). Тем не менее, обе версии могут существовать в системе одновременно, и наиболее серьезным последствием этого может стать путаница и увеличение объема памяти.

лютик золотистый
источник
8
Мне было бы чрезвычайно интересно узнать, как вы пришли к выводу, что Linux более ориентирован на GTK? Linux, как правило, подразумевает только ядро ​​Linux, которое, как правило, не имеет склонности к любому из наборов инструментов, поскольку это ядро ​​ОС, а не программа пользовательского пространства с графическим интерфейсом. Если бы вы подразумевали использование GNU / Linux в качестве операционной системы, я бы все равно оспаривал вашу претензию. Сказать, что GNU / Linux больше ориентирован на GTK, потому что Ubuntu - самый популярный дистрибутив, - это все равно, что говорить, что Christiano Ronaldo - лучший спортсмен, потому что футбол - самая популярная игра в мире. (Я бы тоже это
оспорил
10
@darnir Я добавлю квалификатор GNU, поскольку я имел в виду операционную систему в разговорном смысле. Я защищу свой тезис о том, что он больше GTK, чем ориентированный на Qt: GTK (который изначально обозначал «GIMP Tool Kit», а GIMP = Программа манипуляции изображения GNU), GIMP и GNOME - все это проекты GNU и основная часть их (пользовательского) видения операционной системы, которая в паре с ядром является исторически «linux». Таким образом, GTK был разработан в первую очередь для Linux, он также является родным C (по сравнению с Qt C ++), тогда как Qt является скорее кроссплатформенной сущностью.
Златовласка
1
Хотя я соглашаюсь с вами об истории и этимологии GTK, это не означает, что GNU / Linux ориентирована на GTK. На самом деле обратное верно и подтверждается вашими заявлениями. GTK был разработан для Linux, а не наоборот. Я бы защитил свой тезис о том, что Linux как ядро ​​и GNU / Linux как операционная система не зависят от любого инструментария GUI. GTK часто встречается в природе чаще, чем Qt из-за сильной зависимости Ubuntu от него. Также помогает тот факт, что он легче на системные ресурсы.
Дарнир
3
@darnir Да, ОС по существу независима от инструментария GUI - я бы не сказал, что GTK - это «родной» инструментарий и т. д. Но вы ошибаетесь в том, почему его «часто можно увидеть в дикой природе» - GTK был самый широко используемый инструментарий на платформе до Ubuntu даже существовал из-за вышеупомянутых отношений с другими фундаментальными частями, широко используемыми во всех дистрибутивах. Вот почему большинство linux-приложений с графическим интерфейсом уже являются приложениями GTK, и поэтому без дополнительного контекста имеет смысл сказать новому пользователю: «Вы могли бы также выбрать это», при прочих равных условиях. Но это не имеет большого значения.
Златовласка
Использование нескольких различных наборов инструментов также потребует гораздо большего объема памяти; Я не думаю, что это повлияет на производительность, просто место для других вещей.
DaimyoKirby
19

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

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

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

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

darnir
источник
4

Другим важным аспектом, который следует учитывать, является ссылка на лицензирование Qt для раскрытия их лицензии, которая явно установлена ​​для свободного доступа для большинства некоммерческих проектов, но коммерческие отношения возможны и могут иметь ограничения для этого случая. Принимая во внимание, что GTK прямо заявляет, что он может свободно использоваться даже в проприетарных приложениях, выражение 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. 

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

Васса
источник