wxWidgets, GTK, Qt ? Welches Toolkit?
-
Hi! Irgendwie habe ich das gefühl, das das hier einer der Threads wird, die eher nach Meinungen schreien als nach Fakten...
Wie auch immer.
Ich habe mich Entschieden, dass ich nun mit ein klein Wenig Erfahrung in C und C++ in die Welt der Grafikprogrammierung wage. Ich habe mich ein bisschen eingeles und wollte schon anfangen Xlib zu lernen. Allerdings hat mich ein kleines Tutorial und ein paar Weise worte auf diversen Seiten wieder schnell auf den Boden der Tatsachen zurückgebracht.Jetzt habe ich irgendwo gelesen, dass es mehrere Toolkits gibt, die alle natürlich ihre vor und Nachteile haben.
Nun, ich habe nur leider noch immer keine Ahnung, welches ich lernen soll.
Es wäre wirklich sehr unbequem wenn ich mit etwas anfangen würde, was ich später wieder lasse.Deswegen Frage ich euch hier um Rat, ob ihr mir in meiner Zwickmühle helfen könnt.
Hat jemand von euch Erfahrung mit diesen Toolkits? Hat jemand von euch Erfahrung mit mehreren dieser Toolkits?
Kann mir wer Tips geben, die er vielleicht mal gelesen Hat?Das sind meine Vorlieben, vielleicht scheidet das eine oder andere Toolkit ja dabei shcon aus:
Sprache: C++, C wenns sein muss
Compiler: nur freie Compiler
IDE: muss nicht sein
Portabilität: ganz wichtig. Sollte womöglich noch auf Windows laufen.
Aussehen: Naja...Erst das Fenster, dann das "Look and Feel"
Ich hoffe hier kann mir jemand helfen.
Ich freue mich auf Beiträge wie "XY gefällt mir wegen AB", allerdings nicht auf "Z ist doch scheiße, nimm foo!" Also nicht zuviel Flamen, wenns geht. (Soll ja schon mal vorgekommen sein auf dem Board)
-
Ne wirklich objektive Meinung wirst du bei dem Thema "Ist A, B oder C besser" wohl nicht bekommen
Also meine Meinung ist folgende:
wxWidgets: Verweigert sich modernen C++ Features. Daher sind viele Teile einfach hässlich zu benutzen und interagieren auch nicht gut mit der STL oder modernen Libraries. Anstelle Templates nehmen die wxWidgets Leute zB Macro-Frickeleien.
GTK+: Ist eine C Library. GTKmm ist ein C++-Interface. Die GTKmm API finde ich eigentlich nicht schlecht. Mich stört es nur, dass die Library von so vielen Sachen abhängt. Die Interna von GTK sind wohl auch nicht ganz optimal, so wird beim Scrollen wohl jedes mal das gesamte Fenster neu gezeichnet. Aber imho sehen GTK Anwendungen am besten aus.
Qt: Der eigene Preprozessor ist wirklich nicht schön. Ich frag mich warum der nicht mit der 4er Version abgeschafft wurde. Ähnlich wie wxWidgets wird auf neuere C++ Feature leider verzichtet. Die Fundamente der Library sind aber wohl ziemlich gut.
FLTK: Ist mein persönlicher Favorit, da es ein sehr kompaktes Toolkit ist. Aber auch hier ist die API nicht an neuere C++ Feature angepasst und teilweise nicht ganz optimal. Aber mit FLTK 2.x werden wenigstens schon mal namespaces eingeführt.
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Linux/Unix 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.
-
Ich würde dir zu gtkmm raten.
wxWidgets gefällt mir nicht, unter Linux hat es einige Bugs, z.B. stürzt das Trayicon bei mir manchmal ab, die Thread werfen auch manchmal Fehler (kann allerdings an meiner falschen Anwendung liegen). Am besten schaust du dir ein paar Anwendungen an, z.B. Code::Blocks, unter Linux gefällt mir das gar nicht: Die CPU-Auslastung ist ernorm hoch beim scrollen etc, weiß nicht ob das an wxWidgets liegt. Außerdem gefällt es mir nicht, dass die keine Namespaces nehmen, man nicht einfach eine main-Funktion schreiben darf (sondern irgendson wxApp-Ding) und wxStrings IMO nicht das Ware sind.
gtkmm löst alle Probleme meine Meinung nach besser. Z.B. brauch ich hier keine xpm-Dateien nehmen sondern kann meine Icons aus pngs laden, mit Alpha-Kanal! Als String gibt's Glib::ustring, der genauso wie std::string aufgebaut ist, nur mit UTF-8. wxWidgets benutzt glaub ich UTF-16 oder ANSI, dadurch ist es glaub ich (da bin ich mir nicht sicher) kompatibel zur WinAPI. Den Ansatz von gtkmm find ich besser: UTF-8, sonst nichts. Für mich ist das auch das einzig Ware. Da mein Editor UTF-8 Dateien erstellt kann ich ganz einfach Umlaute in die GUI einbringen. Falls du Beispiele suchst, probier mal Inkscape. Ist ein sehr gutes Programm in gtkmm, gibt's für Linux und Windows.
Unter Linux kannst du außerdem ziemlich einfach GUIs mit Glade erstellen.
Was mir nicht gefällt an gtkmm: die TreeView. Ist mir irgendwie zu kompliziert. Außerdem sind noch einige andere Sachen schwer zu blicken, da liest man manchmal echt lange in der Doku rum.Qt gefällt mir nicht, da ich GNOME benutze, näher angesehen habe ich es mir aber noch nicht. Außerdem finde ich's besser eine API in C zu schreiben und die anderen Sprachen nur als Wrapper. Dadurch kannst du z.B. gtkmm statisch linken, und hast nur GTK als Abhängigkeit. Da diese in C ist, hast du keine Probleme mit unterschiedlichen ABIs und deine Binärdateien sind kompatibel mit Distributionen die andere Versionen vom GCC haben. (Siehe Inkscape, die brauchen nur einen Installer für Windows UND Linux.)
mfg.
-
DrPhil_Guth schrieb:
Hi! Irgendwie habe ich das gefühl, das das hier einer der Threads wird, die eher nach Meinungen schreien als nach Fakten...
Korrekt
Dein Nick ist mir doch auch schonmal jenseits der Alpen über den Weg gelaufen oder irre ich mich?
DrPhil_Guth schrieb:
Hat jemand von euch Erfahrung mit diesen Toolkits? Hat jemand von euch Erfahrung mit mehreren dieser Toolkits?
Kann mir wer Tips geben, die er vielleicht mal gelesen Hat?Ich habe mich für GTK entschieden. Ursprünglich für GTKmm, doch ich hatte Schwierigkeiten es auf Windows ans Laufen zu bringen. Nach etlichen erfolglosen Experimenten hatte ich ein paar Demos liefen, meine Anwendung wollte aber nicht. Also habe ich es auf GTK umgeschrieben und es gab keinerlei Probleme mehr, auch nicht beim Weiterentwickeln.
"GTK Minus Minus" ist das GTK-FrontEnd für C++. GTKmm galt im Januar 06 noch nicht als übertrieben sicher im Umgang mit Windows. Wie es jetzt läuft, weiß ich nicht. Ich benutze immernoch GTK.Ich habe mich für GTK entschieden, wegen der freien Lizenz, die erlaubt auch Closed-Source-Projekte zu gestalten.
Nachteil von GTK ist, dass man GTK erst unter Windows erst installieren muss, um GTK-Programme starten zu können.
QT sieht imho besser aus, aber QT kostet je Lizenz und je OS um die 1000 Euro pro Jahr, wenn ich mich recht entsinne.Dafür bietet QT allerdings auch mehr als nur GUI-Fähigkeiten. Sofern Du nur OpenSource-Anwendungen schreibst, ist QT auch unter Windows frei, soweit ich weiß. Meine QT Erfahrungen sind sehr begrenzt.
wxWidgets erfordert soweit ich weiß keine Installation unter Windows, weil es in Windows über die WinAPI abgebildet wird und unter Linux über GTK. Als ich damals recherchiert habe, fand ich kein Widget für OpenGL, was aber existiert. Vermutlich würde ich mich daher jetzt eher für wxWidgets entscheiden, obwohl wxWidgets am ehesten noch "Frickelcharakter" haben soll, weil eher Macros verwendet werden muss.
Ich habe allerdings noch keine Erfahrung in wxWidgets, von daher.Links zum Thema findest Du auch auf meiner Homepage unter "Programmierung".
-
Schau mal hier: http://www.kharchi.de/cpp_gui/
-
@ Xin, ja, kann schon sein dass wir uns in nem anderen Forum schon mal gesehen haben
Danke für die Hilfe, vor allem die Links waren sehr nützlich.
Ich glaube ich werde mit wxWidgets anfangen, und zwar weils anscheinend wirklich "erprobt" ist, und problemlos auf Windows funktioniert. Was für mich wichtig war ist auch, dass man als "endbenutzer" nichts zusätzlich installieren muss, damits funktioniert, das war mir besonders wichig.
Danke für eure hilfe, ich hoffe das toolkit wird mir gefallen.
mfg, DrPhil_Guth
-
Ich würde jedem GUI-Neuling auf jeden Fall empfehlen, sich Qt4 von Trolltech zu besorgen.
- einfach zu installieren
- klasse Beschreibung
- viele Beispiele
- Programme laufen auf Windows, Linux und Mac.
- open sourceUnd wer dazu die neue HiQt - IDE http://hiqt.org verwendet, die speziell für Qt4 entwickelt wurde und ebenfalls open source ist, wird sich wundern, wie einfach und schön Programmieren sein kann.
Wobei zu erwähnen ist, dass HiQt, obwohl sehr stabil, noch immer beta ist und für bestehende Projekte genutz werden sollte, da die Implementierung für die Eröffnung neuer Projekte nach meiner Information noch in Arbeit ist.
Und nun dürft Ihr mich hauen ...
-
ja, ich wuerde auch qt empfehlen, gefaellt mir persoenlich sehr gut und der assistant ist einfach klasse.
als ide nutze ich kdevelop (3.4).allerdings muss ich sagen, dass ich die anderen gui-toolkits noch nicht grossartig ausprobiert habe.
mfg,
julian
-
Ich denke alle Toolkits haben ihre Vor und Nachteile.
Leider verstehen sich einige Toolkits mehr als Framwork mit GUI, anstatt eine reine GUI Bibliothek darzustellen.
Dies gilt vor allem für wxWidgets und QT.Ich habe mich wegen der liberalen Lizenzierung und guter Verträglichkeit mit Windows und Linux für wxWidgets entschieden,
nutze es jedoch nur als GUI Frontend, der Rest der Library ist eher grauenhaft.
QT finde auch ich ganz gelungen, aber die Lizenzierung ist etwas teuer, auch wenn es für Startups z.B. ganz gute Preisnachlässe gibt.
-
Ich verwende auch Qt und finde es sehr bequem zum Programmieren. Manche stoeren sich an den Macros und am Preprozessor, aber ich finde die Features, die sie dafuer anbieten ziemlich cool. Ich habe aber noch keine wirklich grossen Projekte gemacht und weiss deswegen nicht wie es sich da auswirkt. Dass es keine Namespaces gibt usw stoert mich auch nicht wirklich, schliesslich gibt es keine Namenskonflikte und imo ist ein QString leichter/schneller zu schreiben als ein Qt::String..
edit: Ups, das war ja ein alter Thread. Jetzt hab ich ihn ausgegraben..
-
aMan schrieb:
edit: Ups, das war ja ein alter Thread. Jetzt hab ich ihn ausgegraben..
Jede Meinung zählt.
Notfalls hast Du es jemanden, der grade die gleiche Frage grade stellen wollte, erleichtert, die Such-Funktion nicht zu nutzen.;-)
-
Xin schrieb:
aMan schrieb:
edit: Ups, das war ja ein alter Thread. Jetzt hab ich ihn ausgegraben..
Jede Meinung zählt.
Notfalls hast Du es jemanden, der grade die gleiche Frage grade stellen wollte, erleichtert, die Such-Funktion nicht zu nutzen.;-)
Wie es der Zufall so will, ist dem gerade so. Von der Java API etwas verärgert, schaue ich mir grad nach einer Platform unabhängiger GUI-Bibliothek in C++ um.
Dem scheint aber gar nicht so einfach zu sein. Irgendwie überzeugt mich bis anhin überhaupt keine Bibliothek. Am ehesten noch wxWidgets, aber es scheint ein paar sehr grobe Fehler zu haben, bzw. nicht wirklich gut und schön gestaltete Dinge.
Muss ich wohl wegen der Platformunabhängigkeit doch weiterhin bei Java bleiben ... *seufz*
Grüssli
-
Dravere schrieb:
Xin schrieb:
aMan schrieb:
edit: Ups, das war ja ein alter Thread. Jetzt hab ich ihn ausgegraben..
Jede Meinung zählt.
Notfalls hast Du es jemanden, der grade die gleiche Frage grade stellen wollte, erleichtert, die Such-Funktion nicht zu nutzen.;-)
Wie es der Zufall so will, ist dem gerade so. Von der Java API etwas verärgert, schaue ich mir grad nach einer Platform unabhängiger GUI-Bibliothek in C++ um.
Dem scheint aber gar nicht so einfach zu sein. Irgendwie überzeugt mich bis anhin überhaupt keine Bibliothek. Am ehesten noch wxWidgets, aber es scheint ein paar sehr grobe Fehler zu haben, bzw. nicht wirklich gut und schön gestaltete Dinge.
Muss ich wohl wegen der Platformunabhängigkeit doch weiterhin bei Java bleiben ... *seufz*
Grüssli
wxWidgets ist nicht unbedingt Superneu.
Ich kann bei wxWidgets noch nicht mitreden, was spricht gegen GTK+?
Damit kam ich eigentlich recht gut zurecht. Gtk+ ist C, als Java-Jünger empfielt sich vielleicht die C++ Fassung GTKmm.
-
Xin schrieb:
wxWidgets ist nicht unbedingt Superneu.
Jo, und ich bin gar kein Makrofan
Xin schrieb:
Ich kann bei wxWidgets noch nicht mitreden, was spricht gegen GTK+?
Damit kam ich eigentlich recht gut zurecht. Gtk+ ist C, ...GTK ist mühsam für den Anwender der Software. Habe schon selber probiert Software zu installieren, welche GTKmm verwendet hat. Ich habe es hinbekommen, aber ein normaler User, so ein DAU, der würde das nicht zustande bekommen, erst recht nicht, wenn das Paket nicht irgendwie per Installer mitgeliefert wird.
Xin schrieb:
... als Java-Jünger empfielt sich vielleicht die C++ Fassung GTKmm.
Bezeichnest du mich gerade als Java-Jünger? Hör mal! Ich habe mit C++ vor Java angefangen. C++ nun schon seit über 3 Jahren, Java wurde ich wegen dem Studium gezwungen vor einem Jahr damit anzufangen
Java ist zwar gut, aber in manchen Bereichen einfach zu stark eingeschränkt.Da wxWidgets mich auch nicht so richtig überzeugt hat, habe ich mir noch den Link von Artchi angeschaut und dabei über zwei sehr überzeugende Dinge gestolpert. Zum einen FLTK2.x, was aber mit der Website und der Graphik des GUIs nicht so überzeugt und VCF, welches mich bisher extrem überzeugt hat, bis auf die recht schlechte Dokumentation. Mir ist allerdings immer noch nicht so ganz klar, ob mit VCF nun MacOS unterstützt wird oder nicht. Bei Artchi's Website steht zwar ja, auf der VCF Website steht mehr oder weniger ein jein ... naja
Ich muss jetzt sowieso zuerst einmal noch die Dinger genauer anschauen. Bisher habe ich mir ja nur die Features angeschaut und kurz in der Dokumentation gestöbert und vor allem auch die Lizenzen angeschaut. Ist bei der VCF Sache natürlich auch gut, dass man Closed Source herstellen kann, ohne Gebühr, nur mit einem Hinweis zu VCF und ihrer Lizenz.
Naja, hab noch was Zeit. Das aktuelle Programm muss ich jetzt mit Java hinbekommen. Version 2.0 kann ich ja dann vielleicht mit einer C++ Bibliothek machen.
Grüssli
-
Dravere schrieb:
Xin schrieb:
Ich kann bei wxWidgets noch nicht mitreden, was spricht gegen GTK+?
Damit kam ich eigentlich recht gut zurecht. Gtk+ ist C, ...GTK ist mühsam für den Anwender der Software. Habe schon selber probiert Software zu installieren, welche GTKmm verwendet hat. Ich habe es hinbekommen, aber ein normaler User, so ein DAU, der würde das nicht zustande bekommen, erst recht nicht, wenn das Paket nicht irgendwie per Installer mitgeliefert wird.
Wenn der GTK-Installer dabei ist, ist das doch eigentlich kein Problem. Z.B. Pidgin macht das so.
-
Dravere schrieb:
Xin schrieb:
wxWidgets ist nicht unbedingt Superneu.
Jo, und ich bin gar kein Makrofan
wxWidgets geht auch ohne Makros
Und abgesehen davon das es keine Templates und Namespaces verwendet, ist der GUI Teil ganz passabel,
verträgt sich gut mit einem Backend aus STL & Boost.Und im allgemeinen, es ist schwer eine gute Library mit der richtigen Lizenz zu finden.
QT z.B. finde ich ganz gut, aber ich habe keine Lust auf GPL.phlox