Qt vs gtkmm



  • hi,

    unter den platformübergreifenden gui-toolkits gibt es ja im wesentlichen qt und gtkmm. was findet ihr persönlich besser? oder habt ihr gar eine dritte alternative?



  • du hast das beste vergessen - wxWidgets



  • Hmm ich hab die anderen nie benutzt, bin mit Qt aber recht zufrieden. Einige Dinge sind dort aber buggy und nerven total, wie z.B. ein Widget um große Datenmengen zu loggen oder die QDockWidget unter Linux.

    Aber in der neuen Version gibt es endlich QTrayIcon 👍



  • Delryn schrieb:

    Hmm ich hab die anderen nie benutzt, bin mit Qt aber recht zufrieden. Einige Dinge sind dort aber buggy und nerven total, wie z.B. ein Widget um große Datenmengen zu loggen oder die QDockWidget unter Linux.

    Aber in der neuen Version gibt es endlich QTrayIcon 👍

    Ein Widget um große Datenmengen zu loggen?

    Dafür gibt es doch QTextEdit mit setTextFormat(Qt::LogText) oder nicht?

    Ansonsten kann ich Qt empfehlen. Mit den anderen hab ich keine praktische Erfahrung.



  • an Qt mag ich den "moc" nicht, aber ich geb zu ich hab mich nie ernsthaft damit auseinander gesetzt. gtkmm hat sicher die schoenste API, aber unter Windows sah's nicht wirklich "gut" aus. Irgendwer hat mal behauptet das sei jetzt viel besser, aber nachdem sowohl X-Chat als auch GIMP (die ja beide in GTK+ geschrieben sind, worauf gtkmm ja zugreift) bei mir auf Windows noch nicht 100%ig super funktionieren glaub ich das nicht. Ich persoenlich verwende zur Zeit wxWidgets. Die API ist zwar nicht so schoen wie gtkmm, aber dafuer sind die Programme sowohl unter Windows als auch unter Linux wirklich 100% "zu Hause" 🙂



  • Qt habe ich nie benutzt, da mich immer der moc gestört hat. Es scheint aber, wenn man nicht so auf "modern-C++-style" wertlegt, ein sehr umfangreiches und ausgetüfteltes Paket zu sein.

    GTKmm hat eine sehr nette API. Es stört mich aber, das man so ein Wust an Libraries installieren muss und das alles schon relativ "fett" wird.

    wxWidgets hat wohl auch eine sehr grottige API. (Die benutzen zB keine Templates, sondern emulieren die durch Macros!)

    fltk gefällt mir ganz gut. Die API ist leider nicht so schön wie GTKmm (auch wenn Version 2 ein wenig besser ist/wird). Aber dafür ist es klein und scheint auch unter Linux und OS X sich gut in das System zu integrieren.

    btw. gehört der Thread wohl offensichtlich in das GUI Forum!



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Andere GUIs - Qt, GTK+, wxWidgets verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Qt ist auf jeden Fall ein gutes Produkt. Leider hat dieses wie jede andere C++ GUI Lib noch historische Altlasten (z.B. den MOC). wxWidgets wäre auch schon gestorben, wenn es keine nativen Widgets nutzen würde und die liberale Lizenz nicht wäre. Denn das wx-Team weigert sich doch stur eine Modernisierung zu vollziehen. Wobei Qt sich wohl hauptsächlich wegen der Lizenzpolitik nicht gegenüber wxWidgets durchgesetzt hat.

    FLTK 2.0 wurde z.B. komplett neu entwickelt, weil FLTK 1.x wie wx und Qt veraltet ist. Da ist das FLTK-Team in dem Punkt echt cool! 👍 Gut, FLTK 2 hat kein spektakuläres Design (von wegen Metaprogramming usw.), aber es nutzt aktuelle C++-Features und jeder versteht es in null komma nix.


  • Mod

    gtkmm ist sicherlich vom Design her das beste, aber unter Windows ist das Standard Theme einfach nur hässlich.
    Auch gefällt mir diese typisches "Eine App viele Fenster"- Design wie es Gimp oder Dia verwenden nicht.

    QT ist wie ich finde vom Umfang und Leistung eigentlich das Beste, aber die Lizenz seh ich da als Problem an,
    ich will nicht zur GPL gezwungen werden. Und eine kommerzielle Lizenz, na das muss nun auch nicht sein.
    Und dann noch der MOC, und diverse Makros (Q_OBJECT z.b.), also auch nicht ganz koscher.

    wxWidgets hat stellenweise ein grottiges Design, aber der Part mit den Controls ist imho garnicht mal
    so schlecht. Das Eventsystem von wx ist leider nicht so flexibel, wie ich es manchmal gerne hätte.
    Aber für die GUI tut es, und mehr brauch ich da auch nicht, als GUI Library mag ich auch das es
    native Steuerelemente versucht zu benutzen, und somit die Programme recht Portabel aussehen.
    Zu dem kommt noch die Lizenz, die auch kommerzielle Anwendungen ermöglicht, sehr schön.



  • Ich verstehe die Kritik am moc zum größten Teil überhaupt nicht. Seine Existenz ist ein kleines Ärgernis, das stimmt, aber man hat ja eigentlich nichts mit dem moc zu tun.

    Bei großen Projekten baut man das ins Makefile ein und fertig. Bei kleinen Projekten nimmt man qmake und merkt gar nicht, dass es den moc gibt.



  • Ein zus. Präprozessor ist denke ich auch nicht mal das Ärgernis. In Java z.B. benutze ich auch XDoclet, ist auch ein Präprozessor. Aber den benutze ich freiwillig, weil ich sonst vieles von Hand machen müsste. Weiterhin wird XDoclet hinfällig, wenn ich dafür Java1.5-Annotatios benutze (im Fall von Hibernate). Aber bei Qt ist das Problem, das der Moc ein Zwang ist und vorallem (das ist das schlimmste für mich) das ich nicht weiß was er denn macht. Klar, grob weiß ich es: er erzeugt irgend einen Code. 😃 Im ernst, er ersetzt praktisch C++-Features! 😮 D.h. Trolltech nutzt einfach nicht den ISO-C++ Sprachumfang. Wenn ich einen aktuellen Compiler habe, dann will ich auch, das dieser bitte ausgenutzt wird. So wie das Beispiel mit Java: unter Java 1.4 gabs noch keine Anotations, da nutze man XDoclet. Heute kann Java 1.5 das was XDoclet geleistet hatte, und ich nutze dann kein XDoclet, wenn ich Java 1.5 habe.

    Trolltech verpennt hier meiner Meinung nach C++. Wie lange soll das Argument noch zählen, das angeblich nicht jeder Compiler Templates oder überhaupt ISO-C++ kann? Das gleiche Argument bringt auch das wx-Team: die wollen ganz einfach keine Namespaces, Templates u.ä. einführen, weil angeblich noch nicht jeder Compiler diese Features unterstützt. Wo leben die?



  • Dieses 'moc' ist an sich nicht weiter schlimm - wenn man qmake verdendet. Will man aber ein anderes Build-System verwenden (wie z.B. die autotools oder bjam) hat man ein mehr oder weniger schweres Problem.

    Ich verwende sehr gerne gtkmm. Es hat meiner Meinung nahc die schönste und modernste API. Nur der GTK(mm)-GUI-Designer (glade) ist eher suboptimal. Da hat Qt mit ihrem Designer die Nase vorn.

    Sobald FLTK 2 stable und mature ist, werde ich mir das sicher auch mal näher anschauen. FLUID finde ich etwas seltsam. Es ist offenbar nicht nur ein GUI-Designer; viel mehr kann man damit seine ganzen Sourcen zusammenklicken.



  • Korrekt, Fluid ist nicht einfach nur ein GUI-Designer. Es ist schon eher ein grafischer Sourceeditor für GUI-Programme. Naja, so in etwa formuliert. 😉 Ist auch wirklich am Anfang ungewöhnlich und man muß sich damit wirklich auseinandersetzen. Aber dann scheint Fluid sehr gute Dienste zu leisten.



  • Ich plaediere fuer Qt 😃 😉
    @moc
    Die Kompatibilitaet ist nicht (mehr) der einzige Grund fuer die Verwendung vom moc, siehe hier http://doc.trolltech.com/4.2/templates.html;

    @gtkmm
    Soweit ich weiß, ist gtkmm nur fuer GUI und nicht fuer Netzwerk. Kann man also imo nicht vergleichen..

    Grueße..
    aMan..



  • Artchi schrieb:

    ... wxWidgets wäre auch schon gestorben, wenn es keine nativen Widgets nutzen würde und die liberale Lizenz nicht wäre. Denn das wx-Team weigert sich doch stur eine Modernisierung zu vollziehen.

    Artchi schrieb:

    Trolltech verpennt hier meiner Meinung nach C++. Wie lange soll das Argument noch zählen, das angeblich nicht jeder Compiler Templates oder überhaupt ISO-C++ kann? Das gleiche Argument bringt auch das wx-Team: die wollen ganz einfach keine Namespaces, Templates u.ä. einführen, weil angeblich noch nicht jeder Compiler diese Features unterstützt. Wo leben die?

    Du irrst, die wxWidgets 3.0 (wxTNG, "The Next Generation") ist schon in der Planung: http://www.wxwidgets.org/wiki/index.php/WxWidgets3 (da gibts nur eine grobe Uebersicht, die meisten Diskussionen finden in einer eigenen Mailingliste statt)

    phlox81 schrieb:

    gtkmm ist sicherlich vom Design her das beste, aber unter Windows ist das Standard Theme einfach nur hässlich.

    Nicht nur das, am schlimmsten finde ich die Darstellungs- und sonstigen Fehler, die unter Windows auftreten. Bei X-Chat blockiert ein DCC File Transfer z. B. das Chatfenster, von den Clipping-Fehlern gar nicht zu reden. Gaim funktioniert unter Windows nur mit der GTK-Runtime 2.6, mit der 2.8 aber nicht, .... das sind jetzt zwar GTK+ spezifische Fehler, aber es wuerd mich wundern wenn sie unter gtkmm nicht auftreten wuerden... Kann aber auch sein dass der Fehler hier bei den Entwicklern liegt, die zu faul sind sich fuer Windows-spezifische Bugs zu interessieren.



  • Ponto schrieb:

    Delryn schrieb:

    Hmm ich hab die anderen nie benutzt, bin mit Qt aber recht zufrieden. Einige Dinge sind dort aber buggy und nerven total, wie z.B. ein Widget um große Datenmengen zu loggen oder die QDockWidget unter Linux.

    Aber in der neuen Version gibt es endlich QTrayIcon 👍

    Ein Widget um große Datenmengen zu loggen?

    Dafür gibt es doch QTextEdit mit setTextFormat(Qt::LogText) oder nicht?

    Ansonsten kann ich Qt empfehlen. Mit den anderen hab ich keine praktische Erfahrung.

    Mit QTextEdit geht das nicht, und Qt::LogText gab es auch nur in der 3.x version.

    Versuch mal riesige Datenmengen zu loggen (10.000 bis 30.000 Zeilen pro Minute), da geht QTextEdit in die Knie. Mit QListWidget geht's besser, aber auch da ist schluss wenn man nicht alle paar tausend Einträge mal das Widget leert und in eine Datei streamt.

    Echt schade 😞



  • Versuch mal riesige Datenmengen zu loggen (10.000 bis 30.000 Zeilen pro Minute)

    das macht schonmal keinen sinn in einer gui



  • s schrieb:

    Versuch mal riesige Datenmengen zu loggen (10.000 bis 30.000 Zeilen pro Minute)

    das macht schonmal keinen sinn in einer gui

    Ich denke schon. Wir haben einen GUI Logviewer für unsere Hauptanwendungen, der auch bei mehreren Millionen von Zeilen pro Lauf nicht schlapp macht. Ist eine Art graphisches less und tail, aber für unsere Zwecke angepasst und damit weit komfortabler als Kommandozeilenwerkzeuge. Das Ding ist aber weder in Qt noch gtkmm geschrieben, sondern in Motif.



  • moc

    Was ist moc, von dem alle hier reden ???



  • Das ist ein Präprozessor von Trolltech.


Log in to reply