[C/C++] welches Framework zur GUI-Entwicklung?

  • Hallo Gemeinde,

    Ich bin auf der Suche nach einem guten Framework zur GUI-Entwicklung.
    Es muss nicht besonders umfangreich sein, aber sollter folgenden Ansprüchen genügen:
    - kostenlos und
    - ein (halbwegs vollständiger) GUI-Editor sollte erhältlich sein.

    Platform ist Windows und Portabilität nicht besonders wichtig.
    Ich habe mir bereits folgende Möglichkeiten angesehen:

    direkt Win32 API Programmierung
    - kein Editor
    - viel, und hässlicher Code

    MFC
    - nicht kostenlos

    QT
    - nicht kostenlos für Windows?

    wxWidgets
    - kein (kostenloser) Editor?

    Hat jemand vllt. noch andere Vorschläge oder Empfehlungen?

  • Wie wärs mit GTK+ und dazu Glade?

    Für wxWidgets gibts bei BoaConstructor einen Editor, aber der ist iirc nur für wxPython.

    Edith: Und bei Dev-C++ gabs ein Plugin, das einen wxWidgets Editor enthielt.

    Es gibt eine Theorie, die besagt, dass das Universum sofort verschwinden und etwas noch Unerklärlicheres und Bizarres an seine Stelle treten wird, sobald jemand herausfindet, wofür es gut ist und warum es existiert.

    Es gibt eine andere Theorie, die besagt, dass das bereits geschehen ist.

  • Danke für die Antwort.

    Zitat

    Wie wärs mit GTK+ und dazu Glade?


    Glade sieht ganz gut aus, jedoch muss man GTK+ installiert haben um das Programm zu starten

    Zitat

    Und bei Dev-C++ gabs ein Plugin, das einen wxWidgets Editor enthielt.


    Dev-C++ hat mir als IDE nicht so gut gefallen, allerdings sehe ich gerade das CodeBlocks auch einen wxWidgets Editor enthält.

    Werde mir die beiden mal genauer ansehen, danke.

  • Zitat von sade

    QT
    - nicht kostenlos für Windows?

    Wenn du Open Source Software erstellst schon. Hier runterscrollen bis "Qt Open Source Downloads".

    "Diejenigen, die grundlegende Freiheiten aufgeben würden, um geringe vorübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit."
    Benjamin Franklin (1706-1790)

    Meine Erfahrungen in der Open Source-Welt: blog.bugie.de

  • Zitat von sade

    Platform ist Windows und Portabilität nicht besonders wichtig.
    Ich habe mir bereits folgende Möglichkeiten angesehen:

    direkt Win32 API Programmierung
    - kein Editor
    - viel, und hässlicher Code


    1. VisualStudio C++ Express
    2. Viel hässlicher Code? Also bei MFC und WxWidgets kommt da mehr Code bei raus ;)

    Zitat

    ..
    ...
    ....

    wxWidgets
    - kein (kostenloser) Editor?

    http://wxdsgn.sourceforge.net/
    Das ist wxDev-C++, also eine Version von DevC++ mit integriertem Designer für WxWidgets. Kost nix und ist sehr gut aufgebaut.

    Sei dir nur im klaren, dass via WxWidgets resultierende Kompilate meist 4MB und darüber ausmachen, und wenns nur der Aufruf eines Simplen Befehls im Code ist. Kommt daher, dass der Linker den kompletten Code der entspr. Wx Library linken muss. Bei WinAPI & MFC siehts eben so aus, dass lediglich Wrapper mit eingebunden werden, die die äquivalenten Dlls im System ansprechen.
    Kanns aber via "strip.exe WxWidgetsCompile.exe" die Wx Binary strippen und dann nochmal durch Upx jagen.

    Vorteil bei WxWidgets ist vor allem, dass du wirklich Platformunabhängig bist. Also wenn du was drauf hast und mal ne Kleinigkeit für OSx Programmieren möchtest, ist die Umstellung von WinAPI/MFC hin zum MAC Äquivalent wie Tag und Nacht.

  • Zitat

    Wenn du Open Source Software erstellst schon. Hier runterscrollen bis "Qt Open Source Downloads".


    Danke schön.
    Qt sieht recht beeindruckend aus, das werde ich mir auf jeden Fall näher ansehen.

    Zitat

    2. Viel hässlicher Code? Also bei MFC und WxWidgets kommt da mehr Code bei raus


    Ich hab nicht viel Erfahrung auf dem Gebiet. Das habe ich so gelesen.
    Und mit hässlichen Code meine ich vor allem diese System Hungarian Notation, die bei nur Kopfschmerzen verursacht. Worte wie 'HWND' sind um einiges weniger einprägsam und schlechter zu lesen. Außerdem wird die ganze Sache sinnlos wenn man sich nicht mer daran hält. (Typisches Beispiel WPARAM, was eigentlich ein double word ist).

    Zitat

    Sei dir nur im klaren, dass via WxWidgets resultierende Kompilate meist 4MB und darüber ausmachen, und wenns nur der Aufruf eines Simplen Befehls im Code ist. Kommt daher, dass der Linker den kompletten Code der entspr. Wx Library linken muss. Bei WinAPI & MFC siehts eben so aus, dass lediglich Wrapper mit eingebunden werden, die die äquivalenten Dlls im System ansprechen.
    Kanns aber via "strip.exe WxWidgetsCompile.exe" die Wx Binary strippen und dann nochmal durch Upx jagen.


    Danke für den Tip.

  • Zitat

    Und mit hässlichen Code meine ich vor allem diese System Hungarian Notation, die bei nur Kopfschmerzen verursacht. Worte wie 'HWND' sind um einiges weniger einprägsam und schlechter zu lesen. Außerdem wird die ganze Sache sinnlos wenn man sich nicht mer daran hält. (Typisches Beispiel WPARAM, was eigentlich ein double word ist).

    Die Ungarische Notation gibt Variablennamen erst die richtige Bedeutung.
    pData = Pointer
    hWindow = Handle

    WPARAM wird im WindowCallback eh immer in seinem Low- und High-Word separat ausgelesen, daher machts Sinn ;)

    http://de.wikipedia.org/wiki/Ungarische_Notation


    Generell, wenn du direkt mit C++ und somit mit Anwederklassen loslegst, genießt du einen großen Komfort. Einmal verstanden und du willst jene OOP Weise nicht mehr missen ;) Ich sag nur Klasse "String".
    Der Vorteil der direkten WinAPI Programmierung liegt darin, dass man die Dinge in ihren "nativen" Grundfunktionen kennenlernt. Für viele ist es ein Weg an C++ vorbeizukommen und das eher "einfacher" genannte C zu nutzen. Wenn man aber einmal das Konzept von C++ verstanden hat sind Klassen einfach "lecker".
    Daher ist es überhaupt nicht verkehrt einen Neuling der bereits ein Wenig Ahnung von kleinen Programmierbasics hat .. direkt C++ als Anlaufstelle zu empfehlen. Wenn du einmal prozedural denkst, kommst du davon schwer wieder weg. Guck mal in viele C++ Sourcen, dort wird oft zu 90% procedural orientierter Code vorhanden sein.

    Da ich von Basic her 100% prozedurales herangehen gewohnt bin, hats bei mir länger gedauert, OOP zu verstehen (und ich behaupte ganz klar, dass ich es immer noch nicht 100%ig drin habe ;) )

  • Zitat von incredible

    Da ich von Basic her 100% prozedurales herangehen gewohnt bin, hats bei mir länger gedauert, OOP zu verstehen (und ich behaupte ganz klar, dass ich es immer noch nicht 100%ig drin habe ;) )


    Den Einstieg hatte ich zum Glück schon mit Turbo-Pascal 5.5 begonnen, und seit Delphi 2 richtig ausgearbeitet; am Ende hat mich nicht mal mehr Java beeindruckt (da läuft wirklich praktisch alles über Klassen).

  • Was Delphi nicht direkt unterstützt, sind überladene Standard-Operatoren (z.B. "+" neu definieren) und Funktionen mit variabler Parameteranzahl (nur eingeschränkt bei "cdecl"-Importen).

    Ansonsten aber kann man komplett nach Strich und Faden ableiten und vererben; mit Hilfe von "Interfaces" auch aus mehreren "Eltern".

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!