Was ist der Unterschied zwischen GTK- und QT-Anwendungen?

54

Viele Pakete sind sowohl in der GTK- als auch in der QT-Version verfügbar.

  • Was ist der Unterschied zwischen ihnen?
  • Gibt es einen Unterschied in Leistung oder Arbeitsweise?
Pandya
quelle

Antworten:

41

Im Allgemeinen sollte der Unterschied aus Anwendersicht rein kosmetischer Natur sein. Qt und GTK stellen Themen unabhängig voneinander ein (z. B. über qtconfigoder gtk-chtheme), dies wird jedoch von einigen Desktop-Umgebungen harmonisiert.

GNU / Linux ist in dem Sinne tendenziell mehr GTK-orientiert als Qt, in dem Sinne, dass ersteres häufiger verwendet wird. Sie können es also vorziehen, wenn Sie die Wahl haben. Eine Ausnahme wäre KDE, das Qt für seine eigenen Anwendungen verwendet - obwohl keiner dieser Faktoren sehr wichtig ist.

Ein wichtigeres Problem wäre in Kontexten mit sehr begrenztem RAM (wie in <1/4 GB); In diesem Fall möchten Sie wahrscheinlich, dass das System ausschließlich GTK oder Qt verwendet, aber nicht beide. Bei den meisten modernen Desktops mit Gigabyte Arbeitsspeicher ist dies jedoch kein Problem - die Verwendung von beidem kostet Sie möglicherweise 50 bis 100 MB zusätzlich.


Beachten Sie, dass es auch verschiedene Versionen von GTK (2 und 3) und Qt (3 und 4) gibt, die immer noch weit verbreitet, jedoch nicht abwärtskompatibel sind (eine Qt 3-Anwendung kann also keine Qt 4-Bibliotheken verwenden). Es kann jedoch sein, dass beide Versionen gleichzeitig auf einem System vorhanden sind. Die schwerwiegendste Folge davon ist die Gefahr von Verwirrung und ein bisschen mehr Speicherplatz.

Goldlöckchen
quelle
8
Es würde mich sehr interessieren, wie Sie zu dem Schluss kommen, dass Linux mehr GTK-orientiert ist. Linux impliziert normalerweise nur den Linux-Kernel, der im Allgemeinen keine Vorurteile gegenüber den Toolkits hat, da es sich um einen Betriebssystemkern und nicht um ein GUI-User-Space-Programm handelt. Wenn Sie GNU / Linux als Betriebssystem implizieren wollten, würde ich Ihre Behauptung dennoch bestreiten. Zu sagen, dass GNU / Linux mehr GTK-orientiert ist, weil Ubuntu die beliebteste Distribution ist, ist wie zu sagen, dass Christiano Ronaldo der beste Sportler ist, weil Fußball das am meisten gespielte Spiel der Welt ist. (Ich würde das auch bestreiten)
Darnir
10
@darnir Ich werde das "GNU" -Qualifikationsmerkmal einfügen, da ich das Betriebssystem umgangssprachlich gemeint habe. Ich werde meine These verteidigen, dass es mehr GTK als Qt-orientiert ist: GTK (was ursprünglich für das "GIMP Tool Kit" und GIMP = das GNU Image Manipulation Program stand), GIMP und GNOME sind alles GNU-Projekte und ein Kernbestandteil von ihrer (userland) vision für ein betriebssystem, das mit dem kernel gepaart ist, was "linux" historisch ist. Daher wurde GTK hauptsächlich für Linux entwickelt. Es ist auch native C-Version (im Gegensatz zu C ++ von Qt), während Qt eher eine wirklich plattformübergreifende Entität ist.
Goldlöckchen
1
Obwohl ich Ihnen bezüglich der Geschichte und Etymologie von GTK zustimmen werde, impliziert dies nicht implizit, dass GNU / Linux GTK-orientiert ist. Tatsächlich ist das Gegenteil der Fall und wird durch Ihre Aussagen bestätigt. GTK wurde für Linux entwickelt, nicht umgekehrt. Ich würde meine These verteidigen, dass Linux als Kernel und GNU / Linux als Betriebssystem gegenüber jedem GUI-Toolkit agnostisch sind. GTK wird in der Natur oft mehr als Qt gesehen, weil Ubuntu stark davon abhängig ist. Auch die Tatsache, dass es leichter auf Systemressourcen ist, hilft.
Am
3
@darnir Ja, das Betriebssystem ist im Wesentlichen agnostisch WRT das GUI-Toolkit - ich würde nicht behaupten, dass GTK "das native" Toolkit ist, etc. Aber du liegst falsch, warum es "öfter in der Natur gesehen wird" - GTK war Das vor Ubuntu am weitesten verbreitete Toolkit auf der Plattform existierte aufgrund der oben erwähnten Beziehung zu anderen grundlegenden Teilen, die von allen Distributionen ausgiebig genutzt wurden. Dies ist der Grund, warum die meisten Linux-GUI-Apps bereits GTK-Apps sind und es ohne weiteren Kontext sinnvoll ist, einem neuen Benutzer mitzuteilen, dass Sie sich für diesen entscheiden können, wenn alle anderen gleich sind. Aber es ist eigentlich egal.
Goldlöckchen
Die Verwendung mehrerer unterschiedlicher Toolkits würde auch viel mehr Speicherplatz erfordern. Ich denke nicht, dass dies die Leistung beeinträchtigen würde, sondern nur den Raum für andere Dinge.
DaimyoKirby
19

Nein, es gibt keinen Unterschied in der internen Struktur solcher Programme. GTK und Qt sind Toolkits und Frameworks für Benutzeroberflächen. Dies sind Bibliotheken, mit denen die Entwickler grafische Oberflächen entwerfen.

Wenn ein grafisches Programm (GUI) geschrieben wird, werden zuerst seine Kerninternale entwickelt. Dies ist es, was das Programm zum Laufen bringt. Man sieht nie den Kern, sie werden einfach im Hintergrund ausgeführt. Auf diesem Kern wird eine Benutzeroberfläche (User Interface, UI) entwickelt.

Jetzt konnten die Entwickler die gesamte Benutzeroberfläche von Grund auf neu entwerfen oder von anderen erstellte Designs wiederverwenden. Die Wiederverwendung von Design hat einen großen Vorteil. Dadurch sehen alle Programme auf Ihrem Computer ähnlich aus. Daher verwenden sie GUI-Toolkits. GTK und Qt sind zwei sehr verbreitete GUI-Toolkits.

GTK ist das Standard-Toolkit für GNOME, während Qt von KDE verwendet wird. Aus Sicht des Benutzers unterscheidet sich nur das Aussehen. Das Programm bleibt im Kern dasselbe.

verdammt
quelle
4

Ein weiterer wichtiger Aspekt, der berücksichtigt werden muss, ist der Qt-Lizenzierungslink zu ihrer Lizenzoffenlegung, der ausdrücklich für die meisten gemeinnützigen Projekte frei verfügbar sein soll. In diesem Fall ist jedoch eine Geschäftsbeziehung möglich und unter Umständen mit Einschränkungen verbunden. Während GTK ausdrücklich erklärt, dass es auch in proprietären Anwendungen frei verwendet werden kann, erklärt 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. 

Ein Schlüsselaspekt bei der Entwicklung komplexer Benutzeroberflächen ist GLADE als Design-Kit, und ob dies zu Ihrer Annäherung an Glade Link passt . Es soll plattformübergreifend sein, wird jedoch möglicherweise nicht so umfassend unterstützt wie Qt.

Vass
quelle