Viele Pakete sind sowohl in GTK- als auch in QT-Versionen verfügbar.
- Was ist der Unterschied zwischen ihnen?
- Gibt es einen Unterschied in der Leistung oder Arbeitsweise?
Antwort
Im Allgemeinen sollte der Unterschied aus Anwendersicht rein kosmetischer Natur sein. Qt und GTK setzen Themen unabhängig voneinander (z. B. über qtconfig
oder gtk-chtheme
), aber dies wird durch einige Desktop-Umgebungen harmonisiert.
GNU / Linux ist in dem Sinne eher GTK-orientiert als Qt wird häufiger verwendet, daher möchten Sie es vielleicht bevorzugen, 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.
A. 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 verwendet Qt, aber nicht beides. Auf den meisten modernen Desktops mit Gigabyte Speicher ist dies jedoch kein Problem – Wenn Sie beide ausgiebig verwenden, kostet dies möglicherweise zusätzliche 50-100 MB.
Beachten Sie, dass es auch verschiedene Versionen von GTK (2 und 3) und Qt (3 und 4) gibt ) immer noch weit verbreitet, aber nicht abwärtskompatibel (daher kann eine Qt 3-Anwendung keine Qt 4-Bibliotheken verwenden). Beide Versionen können jedoch gleichzeitig auf einem System vorhanden sein. Die schwerwiegendste Folge davon ist die Gefahr von Verwirrung und ein bisschen mehr Speicheraufblähung.
Kommentare
- 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 Tendenz zu einem der Toolkits hat, da es sich um einen Betriebssystemkern handelt, nicht um ein GUI-Userspace-Programm. Wenn Sie GNU / Linux als Betriebssystem implizieren wollten, würde ich ‚ Ihre Behauptung immer noch 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 meistgespielte Spiel der Welt ist. (Ich ‚ würde das auch bestreiten)
- @darnir Ich ‚ werde die GNU “ Qualifizierer in, da ich das Betriebssystem im umgangssprachlichen Sinne gemeint habe. Ich ‚ werde meine These verteidigen, dass es mehr GTK als Qt-orientiert ist: GTK (das ursprünglich für “ GIMP Tool Kit “ und GIMP = das GNU Image Manipulation Program), GIMP und GNOME sind alle GNU-Projekte und ein zentraler Bestandteil ihrer (Userland-) Vision für ein Betriebssystem , die mit dem Kernel gepaart ist, ist das, was “ Linux “ historisch ist. Daher wurde GTK hauptsächlich für Linux entwickelt, es ist auch natives C (im Vergleich zu Qt ‚ s C ++), während Qt eher eine wirklich plattformübergreifende ist Entität.
- Obwohl ich Ihnen in Bezug auf die Geschichte und Etymologie von GTK zustimmen werde, bedeutet dies nicht implizit, dass GNU / Linux GTK-orientiert ist. In der Tat 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 häufig in freier Wildbahn mehr als Qt gesehen, da Ubuntu ‚ stark davon abhängig ist. Auch die Tatsache, dass die Systemressourcen leichter sind, hilft.
- @darnir Ja, das Betriebssystem ist im Wesentlichen agnostisch. WRT das GUI-Toolkit – ich würde nicht behaupten, dass GTK “ das native “ Toolkit usw. Aber Sie ‚ liegen falsch, warum es “ wird oft in freier Wildbahn gesehen mehr “ – GTK war das am häufigsten verwendete Toolkit auf der Plattform , bevor Ubuntu überhaupt existierte aufgrund der oben genannten Beziehung zu anderen Grundlegende Teile, die häufig von allen Distributionen verwendet werden. Aus diesem Grund sind die meisten Linux-GUI-Apps bereits GTK-Apps, und warum es ohne weiteren Kontext sinnvoll ist, einem neuen Benutzer “ Sie mitzuteilen Sie können auch eine “ auswählen, wobei alle anderen gleich sind. Dies spielt jedoch keine Rolle.
- Die Verwendung mehrerer verschiedener Toolkits würde auch viel mehr Speicherplatz erfordern. Ich glaube nicht, dass ‚ dies die Leistung beeinträchtigen würde, sondern nur den Platz für andere Dinge.
Antwort
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. Sie sehen nie den Kern, sie werden einfach im Hintergrund ausgeführt. Darüber hinaus wird eine Benutzeroberfläche (User Interface, UI) entworfen.
Jetzt können 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 können alle Programme auf Ihrem Computer ähnlich aussehen. Daher verwenden sie GUI-Toolkits. GTK und Qt sind zwei äußerst gebräuchliche GUI-Toolkits.
GTK ist das Standard-Toolkit für GNOME, während Qt von KDE verwendet wird. Aus Sicht des Benutzers unterscheiden sich nur die Looks. Das Programm bleibt im Kern dasselbe.
Antwort
Ein weiterer wichtiger Aspekt ist die Qt-Lizenzierung Link zu ihrer Lizenzoffenlegung , die ausdrücklich für die meisten gemeinnützigen Projekte frei verfügbar ist. Eine Geschäftsbeziehung ist jedoch möglich und kann in diesem Fall Einschränkungen unterliegen. Während GTK ausdrücklich angibt, dass es auch in proprietären Anwendungen frei verwendet werden kann GTK-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 Schlüsselaspekt der komplexen GUI-Entwicklung hängt von GLADE als Design-Kit ab und davon, ob dies zu Ihrem Ansatz passt glade link . Es soll plattformübergreifend sein, wird jedoch möglicherweise nicht so umfassend plattformübergreifend unterstützt wie Qt.
Antwort
Wie vergleichen sie ihre jeweiligen Objektmodelle und wie genau folgen sie dem C ++ – Standard – Nach meiner begrenzten Erfahrung schien QT ein wenig hackig mit den Codegeneratoren zu sein und das Rad mit ihren eigenen funktional äquivalenten Klassen für Strings und Klassen neu zu erfinden. Kurz gesagt, QT schien mehr Pfeifen und Glocken zu haben, was ich sicher viele bin fand es nützlich, 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 gerne einige Meinungen darüber, wie sie sich heute vergleichen – aus der Sicht eines Entwicklers, der sich generischen Ansätzen zu Dingen zuwendet, die versuchen, C ++ – Standards zu verwenden (wie STL, C ++ – Zeichenfolgen, Threads usw.)
Kommentare
- Dies klingt sehr nach persönlicher Meinung, nicht nach einer auf Fakten basierenden Antwort, die ‚ auf den meisten SE-Websites erwartet. Beachten Sie auch, dass Dinge wie
QString
vor Jahrzehnten aus der Not heraus geboren wurden, als es in der STL keine äquivalenten Funktionen gab. Nachdem moderne C ++ – Standards die meisten Funktionen übernommen haben, sind viele Qt-Klassen nur noch dünne Wrapper für die nativen C ++ – Lösungen.