Gtk + vs Qt Sprachbindungen

8

Kurz gesagt: Für diejenigen, die mit Sprachbindungen in Qt und Gtk + vertraut sind. Z.B. Python und Rubin. Gibt es irgendwelche Qualitäts- oder Leistungsunterschiede?

Mehr Hintergrund: Ich kenne C ++ und Qt sehr gut. Minimale Erfahrung mit Gtk +. Ich weiß, dass C ++ nicht ideal für Sprachbindungen ist, weil es keine gut definierte ABI (Application Binary Interface) gibt. Ich habe auch gelesen, dass Gtk + an andere Sprachen gebunden ist. Ich frage mich, wie sich das in der Praxis manifestiert. Sind die Gtk + -Bindungen besser erhalten oder funktionieren sie besser als ihre Qt-Gegenstücke?

Ich bin momentan ziemlich interessiert an der Go-Sprache und sie haben begonnen, Gtk + -Bindungen zu entwickeln. C ++ - Bindungen sind jedoch weit entfernt. Ich frage mich, ob es sich lohnt, Gtk + zu lernen.

    
Adam Smith 11.05.2010, 12:54
quelle

5 Antworten

8

Ich habe GTK und Qt in C ++ und auch PyGTK und PyQt in Python ziemlich ausführlich benutzt.

Qt schlägt GTK Hands down - es ist eine viel flexiblere, moderne und saubere API. GTK fehlen auch einige Funktionen, die mir wichtig sind. Von einem Framework-Standpunkt würde ich Qt empfehlen.

Wie für Sprachbindungen (ich kann nur über Python sprechen, da ich noch nie die Ruby-Entsprechungen verwendet habe), denke ich PyGTK (mit Glade und einem Wrapper wie Padraig Bradys libglade ) macht GUI-Programmierung wahnsinnig einfach und macht Spaß. Wenn Sie jedoch Ihre Software GPL (oder die Lizenzgebühr) bezahlen können, dann ist PyQt auch eine gute Option, und zwar nicht ganz so freundlich wie PyGTK + Glade (mit GTK können Sie Ihre Benutzeroberfläche in Glade als separates XML definieren Datei, so können Sie die Benutzeroberfläche optimieren, ohne Code zu berühren, in Qt, wenn Sie QtDesigner verwenden möchten, müssen Sie Code mit uic generieren, wenn ich mich richtig erinnere) die API selbst ist wirklich sehr schön zu verwenden und spiegelt die Qt-Frameworks sauberes Design sehr genau.

Überhaupt würde ich PyQt über PyGTK empfehlen, aber ich mag voreingenommen sein, da ich Qt heutzutage viel lieber als GTK bevorzuge, obwohl Sie beide ausprobieren und sehen können, was Sie bevorzugen - sie sind beide fast trivial, um zu funktionieren .

Wenn Sie ein großartiges Buch über PyQt suchen, empfehle ich Rapid GUI Programming mit Python und Qt .

Zusammengefasst: IMHO Qt schlägt GTK in Qualität und Fähigkeit. Sowohl PyGTK als auch PyQt sind von ausgezeichneter Qualität und die Fähigkeit spiegelt das zugrundeliegende Framework wider, obwohl PyGTK Glade XML-Dateien laden kann.

    
Dan 12.05.2010, 02:07
quelle
2

Ich denke, dass GTK-Bindungen älter sind als Qt-Einsen (und damit ein bisschen reifer), aber sie sind beide verwendbar und Ihre Vorkenntnisse von Qt sollten der Hauptfaktor bei Ihrer Wahl sein.

Ich entwickelte kleine GUIs, die sowohl Qt als auch GTK mit ihren Python-Bindings verwenden, und fand die beiden Äquivalente. Einiges bedauert jedoch die PyQt-Bindungen mit Qt-Containern (QVector, ...), die nicht in reguläre Python-Datenstrukturen übersetzt werden und somit dem Code ein wenig Komplexität hinzufügen. Ich erinnere mich nicht an die gleichen Probleme mit PyGTK.

    
Lohrun 11.05.2010 13:37
quelle
1

Ich habe sowohl mit PyQt als auch mit PyGTK gearbeitet, und ich würde sagen, dass beide regelmäßig verwaltet und mit ihren übergeordneten Frameworks synchronisiert werden. Jedoch, und das ist völlig subjektiv, fand ich lohnenderes Arbeiten mit PyGTK als mit PyQt, selbst wenn ich vorher keinen Code geschrieben hatte, der GTK verwendet. Wenn Sie Qt gut kennen, gehen Sie doch mit Qt.

    
miquelramirez 11.05.2010 12:58
quelle
1

Ich habe ein paar Kombinationen um Qt versucht: RubyQt, JRuby + Jambi, PyQt. Der erste endet schnell in verschiedenen Segmentierungsfehlern. Meine Qt-Fähigkeiten mögen das Problem sein, aber insgesamt sind die seg-Fehler nicht gut lesbar. Das Forum für RubyQt ist fast tot, also erwarten Sie nicht, dort viele Informationen zu finden.

Also bin ich zu JRuby + Jambi gezogen. Das funktionierte bis gut, ich habe hier und da einige fehlende Funktionen erreicht. Außerdem musste ich ein richtiges Signal / Verbindung für JRuby implementieren. Also, mehr oder weniger ein Hack. Nicht überzeugend.

Endlich bin ich zu Python gewechselt (was ich nicht besonders mag). Aber woooh, was für ein Unterschied. Bindungen sind aktuell, ich muss noch einen segmetatio Fehler feststellen, Fehlermeldungen sind meist sehr erklärend. Soweit es mich betrifft, ist Python + Qt ein klarer Gewinner.

Bitte beachten Sie, dass ich diese Kombinationen ausprobiert habe, um eine korrekte Sprache / qt-Bindung zu finden, so dass ich mit meinen Kommutierungszeiten (ca. 2 Stunden pro Tag) eine Produktion vorbereiten kann. So ist meine Toleranz gegenüber kleinen aber nervigen Problemen wie Segmentierungsfehlern 0. Ich muss auch auf Windows und Linux entwickeln. Also ist Windows-Installation notwendig (und auch hier ist Python ein klarer Gewinner).

    
wiz21 11.08.2011 13:47
quelle
0

Es gibt C ++ gtk + -Bindungen. Google für gtkmm.

    
Wotnot 11.05.2010 12:57
quelle

Tags und Links