Welche GUI mit C++
-
Wie der Titel schon sagt möchte ich beginnen mit Hilfe von C++ GUI-Applikationen zu erstellen, nur was nutzt man am besten?
QT
KTKmm
wxWidgets?wo liegen die stärken / schwächen ?
-
Ich würde dir GTKmm empfehlen. Ist (vor allem) für den Einstieg relativ einfach und komfortabel.
QT hat ein ziemlich seltsames Signal-System, wodurch du QT-Apps nur mit einem speziellen `make` (qmake) erstellen kannst (ok, dürfte per Hand auch gehen, aber eher sehr umständlich). Außerdem werden da Fehler bei "Signal-Verknüpfungen" im Code erst zur Laufzeit sichtbar.
GTKmm ist wie gesagt relativ einfach und erfordert kein spezielles Build-System. Außerdem werden Fehler bereits zur Compile-Zeit sichtbar.
Mit wxWidgets hast du den Look'n'Feel der jeweiligen Plattform (also Aussehen der Buttons, Menüs etc. entspricht der der Plattform, also z. B. Windows, GTK oder QT), aber ich persönlich finds etwas umständlich.
-
devkid schrieb:
QT hat ein ziemlich seltsames Signal-System, wodurch du QT-Apps nur mit einem speziellen `make` (qmake) erstellen kannst (ok, dürfte per Hand auch gehen, aber eher sehr umständlich). Außerdem werden da Fehler bei "Signal-Verknüpfungen" im Code erst zur Laufzeit sichtbar.
-
qmake ist kein Ersatz für make! qmake erzeugt Makefiles, ist somit vergleichbar mit dem traditionellen "./configure" oder cmake. Wobei letztere Beide bei Qt-Programmen auch auf qmake zurückgreifen.
-
Sei froh, dass dein Programm nicht crasht, wenn du nen Pointer löschst, die connection aber nicht. Und das Programm für eventuelle Fehlermeldungen/Warnungen auf der Console starten sollte beim Entwicklungsprozess, insbesondere vor einem Release schon mal drinnen sein, dann kann man solche falschen connections schon mal finden und korrigieren.
-
-
franz schrieb:
- qmake ist kein Ersatz für make! qmake erzeugt Makefiles, ist somit vergleichbar mit dem traditionellen "./configure" oder cmake. Wobei letztere Beide bei Qt-Programmen auch auf qmake zurückgreifen.
Das hab ich auch nicht gesagt, das ändert aber trotzdem nix daran, dass man qmake braucht um im Endeffekt die Makefiles zu erzeugen und dann den Build-Prozess zu starten...
franz schrieb:
- Sei froh, dass dein Programm nicht crasht, wenn du nen Pointer löschst, die connection aber nicht. Und das Programm für eventuelle Fehlermeldungen/Warnungen auf der Console starten sollte beim Entwicklungsprozess, insbesondere vor einem Release schon mal drinnen sein, dann kann man solche falschen connections schon mal finden und korrigieren.
Ich starte meine Programme, an denen ich arbeite, immer im Terminal. Und was hat das jetzt mit Pointern zu tun? Unter GTKmm hab ich gar keine Pointer sondern nur Referenzen oder Glib::RefPtr. Und das ist auch richtig so, als User einer API will ich in C++ nicht mit Pointern rumhantieren müssen.
-
devkid schrieb:
Das hab ich auch nicht gesagt,
devkid schrieb:
wodurch du QT-Apps nur mit einem speziellen `make` (qmake) erstellen kannst
das ändert aber trotzdem nix daran, dass man qmake braucht um im Endeffekt die Makefiles zu erzeugen und dann den Build-Prozess zu starten...
Was auch wirklich furchtbar schlimm ist, da qmake ja bei jeder Qt-Installation mitkommt...
devkid schrieb:
Und was hat das jetzt mit Pointern zu tun? Unter GTKmm hab ich gar keine Pointer sondern nur Referenzen oder Glib::RefPtr. Und das ist auch richtig so, als User einer API will ich in C++ nicht mit Pointern rumhantieren müssen.
Sry, ich hab keine Ahnung von GTK(mm). Drum weiß ich auch nicht, wie du da deine Signale emittierst und darauf dann reagierst.
Mit den Pointern bezieh ich mich hierauf:
http://doc.trolltech.com/4.4/templates.html
Bei boost glaub ich gibt es ein signal-slot-Konzept über Templates.Aber eigentlich ist es ja wurscht, was man nimmt, um seine GUIs zu erzeigen
Wollte hier niemandem auf den Schilpps treten (sry).
Ich komm mit Qt sehr gut zurecht, war das erste was ich mir angeschaut hab und war gleich glücklich damit.Grüße und nen schönen Weihnachtsabend
Franz
-
@ravenheart
Probier die verschiedenen Toolkits doch einfach mal aus und nimm dann das welches dir am ehsten zusagt.
Ein interessanter Link ist vielleicht noch http://www.c-plusplus.net/forum/viewtopic-var-t-is-63291-and-postdays-is-0-and-postorder-is-asc-and-start-is-0.html
-
guenni81 schrieb:
Ein interessanter Link ist vielleicht noch http://www.c-plusplus.net/forum/viewtopic-var-t-is-63291-and-postdays-is-0-and-postorder-is-asc-and-start-is-0.html
Wobei der in Bezug auf Qt schon veraltet ist (von 2004).
Qt4 ist auf allen Plattformen zur Programmierung von OSS kostenlos.
Außerdem sind Doku + Tuts + Exmaples wiklich enorm umfassend!
-
franz schrieb:
Wobei der in Bezug auf Qt schon veraltet ist (von 2004).
Stimmt, der Thread ist schon ein wenig älter und auch eigentlich gar nicht den ich gemeint habe. Naja, dann ansonsten einfach mal die Suche nutzen, da dieses Thema schon sehr oft diskutiert wurde.
-
Um dir bessere Vorschläge machen zu können, musst du einige Fragen klären:
- auf welchen Betriebssystemen soll deine Anwendung laufen bzw. ist es unbedingt nötig mehrere Plattformen (Win + Mac/OSX + Linux) zu unterstützen
- wer soll deine Anwendung benutzen (nur für dich, firmenintern bzw. kleine Gruppe, sehr Viele eventuell weltweit)
- ist das GUI sehr umfangreich oder z.B. nur 3 Fenster, Mehrsprachig ?
- Open-Source oder Closed-Source
- soll es nur Hobby oder Professionell sein
-
also:
die programme sollten sowohl auf windows als auch auf linux ausführbar sein, es handelt sich hierbei nur um privat-projekte, allerdings sollte keine beschränkung "nach oben" vorliegen, sprich ich nehme gerne etwas mehr koplexität für freiheit auf mich.
es sollte sich auf jeden fall um ein kostenloses gui-kit handeln
-
wxWidgets.
Wenn Du Deine Programme später auch kommerziell vertreiben möchtest, bzw ClosedSource von Anfang an programmieren möchtest, fällt QT schon einmal weg, da dort dann mehrere tausend Euro Lizenz-Gebühren fällig werden. Dann lieber gleich wxWidgets. Wie die Lizenz von GTK(mm) aussieht, weiss ich gerade nicht, aber die Runtime von GTK ist sehr umfangreich und nicht jeder möchte diesen Brocken installieren, was mMn ein Minuspunkt ist. wxWigets kommt mit einer DLL aus, die man direkt mitliefern kann.
Es mag auch andere geben, ich bin da leider ein Fanboy :D, aber am Ende ist so eine Empfehlung immer eine persönliche Vorliebe.
Einige Links für den Start:
http://wxwidgets.org
http://wxformbuilder.org
Als IDE empfehle ich Visual C++ Express von M$ wegen dem schönen Speicherleck-Reporting im Ausgabe-Window.
rya.
-
Qt:
- es gibt 2 Lizenzformen:
Kommerziell: - kostet ein paar tausend EUR (abh. von Anzahl Plattformen), notwendig bei Closed-Source-Entwicklungen
GPL: - kostenlos für den nichtkommerziellen Einsatz, deinen Quellcode musst du offenlegen, keine Visual-Studio-Integration der Tools (GUI-Designer etc.) - ist sehr umfangreich (nicht nur GUI)
- KDE-Desktop bei Linux basisert auf Qt
- wird von einer Firma entwickelt, eventuell mehr ManPower als z.B. wxWidgets (aber Qt hat nicht Vadim Zeitlin)
GTKmm (habe keine Erfahrung damit)
- nur GUI-Funktionen, Rest (XML, Netzwerk,...) muss durch weitere Bibliotheken realisiert werden
- ist ein C++-Wrapper für GTK+ (ist in C)
- GTK+ emuliert nur das Aussehen und Verhalten der Steuerelement auf dem jeweiligen Betriebssystem (http://de.wikipedia.org/wiki/GUI-Emulation), Gnome-Desktop bei Linux (Ubuntu) basiert auf GTK+, unter Windows sehen GTK-Programme "fremd" aus
wxWidgets (verwende ich, habe vorher MFC verwendet):
- vollkommen kostenlos, auch für kommerzielle und ClosedSource-Entwicklungen
- sehr umfangreich (nicht nur GUI), vergleichbar mit Qt
- natives Aussehen/Verhalten der Steuerelemente (keine GUI-Emulation), auch in der nächsten Windows-Version wird dein Programm nicht "fremd" aussehen (Qt kann das in der neuesten Version auch für XP und Vista, sonst verwendet Qt nur GUI-Emulation auf Win/OSX)
- wird aktiv weiterentwickelt (kleines Team, aber gute Leute wie V.Z.)
- GUI-Designer gibts mehrere dafür, sehr gut ist http://www.wxformbuilder.org oder gleich eine IDE mit integriertem Designer verwenden http://www.codeblocks.org/ (im Forum unter Nightly Builds schauen)
- es gibt 2 Lizenzformen: