Suche passende GUI



  • Hallo

    Bis jetzt habe ich mit der WinAPI als Framework gearbeitet. Für das Erzeugen von einem Fenster, den wichtigsten Fensterhandlinggeschichten und für Eingaben reicht das, aber sobald ich Buttons und solches Zeug verwenden möchte wird das einfach zu kompliziert und zu viel Arbeit.
    Deswegen möchte ich auf eine bessere GUI umsteigen.

    Folgendes muss sein:
    Erstellung eines Vollbildfensters für OpenGL 3-Rendering (mit Kontexteinstellungen für z.B. Multisampling)
    einfache "Sachen" wie Buttons, Edits,...
    lauffähig auf Windows
    Programmiersprache C++
    gratis für OpenSource-Veröffentlichungen
    gute Dokumentation zum Erlernen

    Folgendes sollte sein:
    portabel (Mac, Linux, idealerweise auch für mobile Systeme)
    kompliziertere "Sachen" wie Ladedialoge, Kontextmenüs, Menüleisten,...
    Netzwerkprogrammierung (portabel)
    gratis für kommerzielle Veröffentlichungen

    Mit momentanen Wissen würde ich gtkmm verwenden (hab gelesen, dass es in modernen C++ geschrieben ist, womit ich mein gerade erweitertes C++-Wissen festigen könnte)
    Allerdings möchte ich mir den Ärger ersparen, wenn ich schlecht entscheide, deswegen die Frage hier.



  • Also ich würde dir wxWidgets empfehlen. Hab auch zuerst Winapi programmiert und bin dann umgestiegen. wxWidgets lässt sich auch leicht erlernen, du kannst dir das Buch "wxWidgets GUI Programming" (Englisch) kostenlos downloaden.



  • Qt ist auch zu empfehlen (wird vermutlich öfters benutzt und besser gepflegt), wobei du bei Qt nur gratis kommerziell veröffentlichen darfst, wenn du dynamisch linkst. (Eventuell kannst du auch statisch liefern und dein Object-File mit ausliefern)



  • Die Frage ist auch was der Hauptzweck des Programms ist.
    Da du von OpenGL, Ladedialoge und nur einfache Controls schreibst könnte auch ein Spiele-Framework sinnvoll sein http://en.wikipedia.org/wiki/List_of_game_engines.
    Ansonsten wxWidgets, Qt. Bei den beiden ist mehr als GUI drinnen (XML, Netzwerk, Filesystem, ...). Bei gtkmm (oder FLTK) ist nur GUI drinnen, restliche Sachen muss man mit anderen Bibliotheken (boost, ...) machen.



  • Was genau für eine Art Programm soll das denn werden? Willst du eine GUI um das OpenGL Fenster herum bauen oder willst du eine GUI in das OpenGL Fenster hinein bauen?



  • Eine Game-Engine möchte ich eben nicht verwenden, die kann mir schon zu viel.
    Es geht mir nur um die GUI, mit Erweiterungen z.B. für Netzwerke.

    Für Buttons, Edits und Menüs wäre die GUI im OpenGL-Fenster gut, aber das wäre im Notfall auch möglich selbst zu schreiben. Ansonsten wäre das OpenGL-Fenster ein Teil der Benutzeroberfläche und die GUI herumgebaut. (Hab zum Einstellen der Beleuchtung in einer OpenGL-Szene mich mit WinAPI-Edits geplagt, deshalb will ich jetzt eine bessere GUI)

    Noch weitere Fragen sind mir eingefallen:
    - Wie sieht es mit iOS/Android Portabilität aus?
    - Wie groß sind für die dll-Dateien, die ich zum Ausführen des Programms mitliefern muss?
    - Habe ich das richtig gelesen, dass Qt auch unter der LGPL läuft und wenn ich die dll-Dateien für Qt mitliefere, dass ich dann den Code nicht offenlegen muss?

    Danke für die bisherigen Antworten, jetzt schwanke ich noch zwischen Qt und wxWidgets



  • Ich verwende gern FLTK 1.3. Kann auch ein OpenGL-Fenster einbinden. Ist klein und wird statisch gelinkt. Kompatibilitaet zu iOS ... keine Ahnung. Qt finde ich fuer die meisten Sachen Overkill.



  • Senfti schrieb:

    Noch weitere Fragen sind mir eingefallen:
    - Wie sieht es mit iOS/Android Portabilität aus?
    - Wie groß sind für die dll-Dateien, die ich zum Ausführen des Programms mitliefern muss?
    - Habe ich das richtig gelesen, dass Qt auch unter der LGPL läuft und wenn ich die dll-Dateien für Qt mitliefere, dass ich dann den Code nicht offenlegen muss?

    iOS ist soweit ich weiß mit ObjectiveC zu programmieren, Android mit Java.
    Dll-Dateien sind so 10-20 MB.
    Das mit Qt und der LGPL hast du richtig gelesen. Wichtig ist, dass der Benutzer die Qt-Version austauschen kann und das geht eben, wenn du DLLs verwendest.


Anmelden zum Antworten