Frage

Eine Menge Leute scheinen eine Meinung zu haben, die besser ist. Ich bin nicht wirklich für diese Meinungen zu fragen, was Ich mag gerne wissen die Details sind: Was sind die Dinge, die ein grafisches Toolkit unterscheidet sich von anderen zu ermöglichen, und welche dieser Unterschiede tun Qt und GTK + haben

War es hilfreich?

Lösung

Ich kann nicht direkt auf Gtk +, sprechen aber bei meinem vorherigen Job habe ich Gtkmm, und in meinem derzeitigen Job, den ich verwenden Qt. Beide sind C ++, so in dieser Hinsicht sie konsistent sind, aber Gtkmm ist / war nur ein Wrapper für die Gtk + Code, der in geraden C ist.

In der Zeit, die ich Jobs geschaltet, ich erinnere mich, dass einer der Hauptunterschiede in den Ui-Code war, wie die beiden Toolkits Layouts behandelt. Einige Teile Ich dachte, Gtk besser ab, einige dachte ich Qt besser abschnitten. Beide können Sie Ihre Widgets bekommen, wo Sie wollen, eventuell.

Debugging mit Gtkmm war ein bisschen nervig, weil die Klassen im Allgemeinen nichts zu tun hat, außer einen Zeiger auf eine Struktur halten und Gtk + Funktionen aufrufen. Diese zusätzliche Dereferenzierungsebene ärgerlich sein könnte.

Qt mehr Hilfscode hat, die in verschiedenen Einstellungen nützlich sein kann, zumindest im Vergleich zu der Version von Gtkmm, die ich benutze. Dinge Threading, Inter-Prozess-Kommunikation zu machen und einfache Vernetzung aller geschätzt werden, wenn Sie eine neue Dimension zu Ihrem Programm hinzufügen müssen. Sie haben auch ihre Container, wenn Sie diejenigen verwenden möchten, die ich denke, eine vernünftigere Schnittstelle als die STL-Containern - aber sie tun es über die gleiche Sache am Ende, also ist es ein leichter Vorteil

.

Das Signal / Schlitz-Mechanismus zwischen Gtkmm und Qt ist anders. Qt verläßt sich auf einem zusätzlichen Schritt in dem Prozess der Kompilierung Metainformationen zu erzeugen, die es für sein Signal / Slots verwendet. Ein Objektsignale oder Schlitze verwenden, müssen aus einem QObject erben und die QObject Vererbungs muss der erste sein, ohne Diamantstruktur. Dies macht es schwierig, eine abstrakte Schnittstelle zu definieren, die ein Signal, beispielsweise emittiert. Auf der positiven Seite, sind sie von Natur aus Threadingprobleme bewusst, und das Signal / Slot-Verbindung in eine ereignisbasierte Verbindung bei Bedarf konvertieren. Gtkmm verwendet SIGC Signale, die einfach C ++ Klassen, und ich erscheint in einer größeren Vielfalt von Situationen nützlich zu sein. Außerdem werden nur Objekte, die eine Verbindung herstellen müssen von der magischen Basisklasse erben, wie ich mich erinnere. Plus, da die Schlitze Objekte sind, können Sie sie als sehr schöne anpassungsfähig Funktors Objekte als auch verwendet werden.

Ich bin sicher, es gibt noch andere Unterschiede, aber das ist, was ich jetzt wieder zu verwenden. Denken Sie daran, meine letzte Erfahrung mit Gtkmm war vor etwa 3 Jahren, so dass einige dieser Elemente können geändert haben jetzt.

Andere Tipps

Um die Unterschiede zu verstehen, seine besten die Geschichte zu verstehen.

QT wurde als UI entwickelt und hatte zu Beginn einige Lizenzprobleme, wenn KDE erst noch entwickelt werden gestartet. KDE wählte QT, da es nicht viel Auswahl war damals (Motiv, Tcl / Tk nur einige zu nennen)

Das GIMP begann zu entwickeln und zu der Zeit die Fenster Toolkits war nicht zu wünschen übrig, was die Entwickler benötigt, so dass sie begonnen, die Gimp Tool Kit (GTK) zu schreiben. Nach einiger Zeit wurde beschlossen, GTK neu zu schreiben und es Oriented (GTK +) macht Objekt.

Auch um diese Zeit, aufgrund der potenziellen Lizenzprobleme mit QT, Gnome wurde gestartet und beschlossen, die GTK + -Bibliothek zu verwenden.

Nun, wenn Sie die QT Entwurf und die GTK Entwurf Einträge auf Wikipedia, können Sie beginnen, einige der Unterschiede zwischen den Systemen zu sehen.

Beachten Sie, dass QT als eine bezeichnet wird:

  

plattformübergreifende Anwendungsentwicklung Rahmen

während GTK + als eine bezeichnet wird:

  

Cross-Plattform-Widget Toolkit für grafische Benutzerschnittstellen zu schaffen.

Wenn diese Einträge angenommen werden sollen, dann denke ich, dass ist, was wir konnten die großen Unterschiede zwischen den beiden, aber ich würde sagen, es ist eine ziemlich feine Linie in der heutigen Welt.

In erster Linie können Sie mit Gtk + von C. Qt ist nur C ++.

Auch Gtk + Anwendungen neigen dazu, Dialoge zu haben, die dauerhaft zu ändern, mit einer Schaltfläche zum Schließen. Qt neigt entlang der Linien von OK / / Abbrechen zu sein. Ich weiß nicht, wie viel davon auf Toolkit Ebene erzwungen wird, though.

Wie für die Programmierung, ich weiß nicht, was für Callback-Mechanismus Gtk verwendet, aber Qt-Signale-Slots Mechanismus absolut Felsen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top