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

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

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

  • Was ist der Unterschied zwischen ihnen?
  • Gibt es Unterschiede in der Leistung oder Arbeitsweise?

Antwort1

Im Allgemeinen sollte der Unterschied aus Benutzersicht rein kosmetischer Natur sein. Qt und GTK legen Designs unabhängig voneinander fest (über z. B. qtconfigoder gtk-chtheme), dies wird jedoch von einigen Desktopumgebungen harmonisiert.

GNU/Linux tendiert eher zu GTK als zu Qt, da ersteres häufiger verwendet wird. Daher ist es möglich, dass Sie GTK den Vorzug geben, wenn Sie die Wahl haben. Eine Ausnahme besteht unter KDE, wo Qt für die eigenen Anwendungen verwendet wird – obwohl keiner dieser Faktoren besonders wichtig ist.

Ein größeres 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 verwendetoderQt, aber nicht beides. Auf den meisten modernen Desktops mit Gigabyte-Speicher ist dies jedoch kein Problem – die intensive Nutzung beider Systeme könnte Sie (geschätzt) 50-100 MB zusätzlich kosten.


Beachten Sie, dass es auch verschiedene Versionen von GTK (2 und 3) und Qt (3 und 4) gibt, die noch weit verbreitet sind, aber nicht abwärtskompatibel sind (eine Qt 3-Anwendung kann also keine Qt 4-Bibliotheken verwenden). Allerdings können beide Versionen gleichzeitig auf einem System vorhanden sein, und die schwerwiegendsten Folgen davon wären mögliche Verwirrung und etwas mehr Speicheraufwand.

Antwort2

Nein, es gibt keinen Unterschied in der internen Struktur solcher Programme. GTK und Qt sind Benutzeroberflächen-Toolkits und Frameworks. Es sind Bibliotheken, die die Entwickler zum Entwerfen grafischer Oberflächen verwenden.

Wenn ein grafisches (GUI) Programm geschrieben wird, werden zuerst die internen Kernfunktionen entwickelt. Diese sorgen dafür, dass das Programm läuft. Siesehender Kern, sie werden einfach im Hintergrund ausgeführt. Auf diesem Kern wird eine Benutzeroberfläche (UI) entwickelt.

Jetzt können die Entwickler die komplette Benutzeroberfläche von Grund auf neu gestalten oder Designs anderer wiederverwenden. Die Wiederverwendung von Designs hat einen großen Vorteil. Dadurch sehen alle Programme auf Ihrem Computer ähnlich aus. Daher verwenden sie GUI-Toolkits. GTK und Qt sind zwei äußerst verbreitete GUI-Toolkits.

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

Antwort3

Ein weiterer wichtiger zu berücksichtigender Aspekt ist die Qt-LizenzierungLink zu ihrer LizenzoffenlegungDas GTK ist ausdrücklich für die meisten gemeinnützigen Projekte frei verfügbar, aber eine kommerzielle Beziehung ist möglich und kann in diesem Fall Einschränkungen unterliegen. GTK hingegen gibt ausdrücklich an, dass es auch inproprietärAnwendungenGTK-Anweisung:

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 wesentlicher Aspekt der komplexen GUI-Entwicklung wird auf GLADE als Design-Kit beruhen und ob es zu Ihrem Ansatz passt.Lichtung-Link. Es soll plattformübergreifend sein, wird aber möglicherweise nicht so umfassend plattformübergreifend unterstützt wie Qt.

Antwort4

Wie schneiden sie im Vergleich ab, was ihre jeweiligen Objektmodelle angeht, und wie genau folgen sie dem C++-Standard? Meiner begrenzten Erfahrung nach schien QT mit seinen Codegeneratoren ein wenig abgedroschen zu sein und das Rad mit seinen eigenen funktional gleichwertigen Klassen für Strings und Klassen neu zu erfinden. Kurz gesagt schien QT mehr Schnickschnack zu haben, was viele sicher nützlich fanden, aber es schien auch ein schweres, proprietäres Gefühl zu haben. Wie gesagt, ich hatte nur begrenzte Erfahrung damit (und noch weniger mit Gtk). Ich hätte gern einige Meinungen dazu, wie sie heute im Vergleich abschneiden – aus der Sicht eines Entwicklers, der zu generischen Ansätzen bei Dingen tendiert, die versuchen, C++-Standards zu verwenden (wie STL, C++-Strings, Threads usw.).

verwandte Informationen