Probleme mit wxWidgets u. Bester GUI-Designer für Code::Blocks



  • Benutz den wxFormBuilder. Der ist so das beste kostenfreie Tool für wxWidgets. Kann C++ oder PythonCode erzeugen oder auch das wxRC Format.

    Win32 GUI Project ist halt die native WinAPI.



  • Wenn deine Programme nur unter Win7 laufen sollen und sich optimal ins System integrieren sollten, dann nimm das aktuellste .NET/C#.

    Andere Frameworks werden sich immer (minimal) unterscheiden.

    Wir (Team mit 10 Leuten) benützen in der Firma Qt mit QtCreator oder Visual Studio, leben mit den für uns unbedeutenden Unterschieden, und sind total zufrieden damit.



  • @All: Vielen Dank für eure Antworten. Hauptsächlich möchte ich native Windows 7 GUIs bauen. Hin und wieder möchte ich mir aber auch GUIs zeichnen, auf denen ich z.B. in Photoshop selbstentworfene Bedienelemente wie "Schließen" oder "Minimieren" draufbauen kann. Gibt es einen Designer mit dem man beides machen kann? Mit der WinAPI ist das nicht möglich oder? Btw, gibt es eigentlich einen WinAPI-Designer, oder kann man die WinAPI-Fenster wirklich nur durch coden bauen?

    Wo liegt denn mein Problem bei der Installation von wxWidgets?

    @Softwaremaker: Das Qt-SDK habe ich nicht ausprobiert, weil ich bisher gedacht habe, das man damit keine nativen Windows 7 Fenster zeichnen kann. Der Nachteil bei Qt wäre aber auch, das man soweit ich weiß nicht statisch linken darf und somit sogar bei kleinen Programmen ne Menge dlls mitgeben muss, oder?. Ich möchte eigentlich schon bei C::B bleiben. Oder wäre der Qt-Creator einem C::B mit Qt-SDK vorzuziehen?

    @Scorcher24: Wieso ziehst du wxFormBuilder dem wxSmith vor?



  • Weil ich Visual C++ 2008 Prof. verwende. Und ich verwende die wxRC Dateien und keinen generierten Code, das ist besser.
    Zu deinem Problem nochmal:

    Verwende bitte wxWidgets 2.9. Der 2.8 build ist scheisse. Ausserdem sind die strings in 2.9.x viel besser, da es die Unterscheidung Unicode -> non Unicode nicht mehr gibt. Sondern es wird intern immer utf8 verwendet was auf der Platform nativ ist. Man kann aber trotzdem auch mit char-strings arbeiten.

    Dann die setup.h:
    Die findet sich in "wxWidgets-x.x.x\lib\compiler_buildtyp\platformname_ud" also als Beispiel: "C:\wxWidgets-2.9.2\lib\vc_dll\mswud"
    Den Pfad musste includen.
    Aber wie gesagt: Nutze 2.9.2, das ist aktueller. Die 2.8 ist bestimmt 4 Jahre alt^^. Auserdem kann das neuere auch nativ die STL verwenden.



  • Nach jahrelangem MFC fing ich mit wx an und fand es auch ganz ok. Was mich aber gestört hat war, das es keine IDE mit integriertem guten GUI-Editor gibt.
    Habe wxFormbuilder und VisualStudio benutzt, da der wxFormbuilder am umfangreichsten war. Er kann leider nur Layouts und keine manuelle Positionierung von Controls, was bei einen GUI-Entwurf (Konzeption) stört.

    Seit Qt 4.5 gibts die LGPL und der Qt-Creator wurde veröffentlicht. Seit dem bin ich von wx weg und nutze Qt mit dem Qt-Creator und bin voll zufrieden.
    Wenn man keine kommerzielle Lizenz hat (sehr teuer) kann man zwar nur dynamisch linken und muss relativ große Qt-DLLs mit ausliefern, hält sich aber im Rahmen (Programm+DLLs gepackt ca. 6 MB).



  • Softwaremaker schrieb:

    Nach jahrelangem MFC fing ich mit wx an und fand es auch ganz ok. Was mich aber gestört hat war, das es keine IDE mit integriertem guten GUI-Editor gibt.
    Habe wxFormbuilder und VisualStudio benutzt, da der wxFormbuilder am umfangreichsten war. Er kann leider nur Layouts und keine manuelle Positionierung von Controls, was bei einen GUI-Entwurf (Konzeption) stört.

    Seit Qt 4.5 gibts die LGPL und der Qt-Creator wurde veröffentlicht. Seit dem bin ich von wx weg und nutze Qt mit dem Qt-Creator und bin voll zufrieden.
    Wenn man keine kommerzielle Lizenz hat (sehr teuer) kann man zwar nur dynamisch linken und muss relativ große Qt-DLLs mit ausliefern, hält sich aber im Rahmen (Programm+DLLs gepackt ca. 6 MB).

    Ihr immer mit eurem QT. Die Layouts sind erforderlich bei wxWidgets. Manuelle Positionierung ist nicht empfohlen.
    Genauso wie QT nen metacompiler nötig ist. Das empfinde ich als viel störender als alles andere.



  • Die Layouts sind erforderlich bei wxWidgets. Manuelle Positionierung ist nicht empfohlen.

    Man kann in wx auch manuell Positionieren (der Controls-Konstruktor hat ja ein wxPoint defaultPosition) nur unterstützt das kein wx-GUI-Editor.
    In Qt platziere ich erst die Controls manuell (Konzeption), kann das Programm starten/testen und dann erst die Layouts realisieren (Controls markieren und Layouter wählen).
    Den MOC merkt man nicht und ich hatte damit noch keine Probleme.
    wx ist gut, aber Qt ist einfach noch besser. 😉



  • Softwaremaker schrieb:

    Die Layouts sind erforderlich bei wxWidgets. Manuelle Positionierung ist nicht empfohlen.

    Man kann in wx auch manuell Positionieren (der Controls-Konstruktor hat ja ein wxPoint defaultPosition) nur unterstützt das kein wx-GUI-Editor.
    In Qt platziere ich erst die Controls manuell (Konzeption), kann das Programm starten/testen und dann erst die Layouts realisieren (Controls markieren und Layouter wählen).
    Den MOC merkt man nicht und ich hatte damit noch keine Probleme.
    wx ist gut, aber Qt ist einfach noch besser. 😉

    Ich hab nicht gesagt dass es nicht geht. Ich sagte, es ist nicht empfohlen. Deswegen unterstützen es auch die Editoren nicht. Ausserdem ist es schlechtes Design.
    Wenn man sich auf feste Positionierung und Größen festlegt, legt man sich auch im ernstfall auf eine bestimmte Sprache fest oder hat nachher ein Problem wenns um mehrsprache Applikationen geht. Dann fetzt dir nämlich dein Layout auseinander.

    Aber mach du ruhig mit Qt, aber dieses wehemente "wäääh QT is viel besser" geht langsam Richtung Sekte. QT ist schlechtes C++. Mehr nicht.



  • Du hast vollkommen recht und ich wollte dir in dem Punkt nicht wiedersprechen, Layouts sollte man auf jeden Fall nutzen, besonders bei Localization und größenveränderbaren Fenstern. Bei MFC war das einfach nur blöd (nur manuelle Positionierung, schwere Localization mittels Resource-DLLs).
    Aber beim Entwurf eines GUIs ist manuelle Positionierung erstmal hilfreich, bei Layouts muss man zu Beginn schon das GUI-Konzept haben (kann ForeUI www.foreui.com zur Konzeption sehr empfehlen).

    Die wxWidgets-Leute machen eine gute Arbeit, die Bibliothek ist ausgereift (nur die Deklaration von Containern gefällt mir nicht) und der Umstieg von MFC auf wx war sehr einfach (Qt fand ich damals garnicht gut).
    Nur brauche ich auch anpassbare Oberflächen (Farbe der Controls und Fenster ändern) und das geht bei Qt mit StyleSheets super einfach, bei wx ist es aufwendiger bzw. muss man über wxUniv gehen. In vielen Punkten ist Qt mit wx gleich gut, aber Qt hat einfach mehr Entwickler und Geld und das merkt man auch. Aufgrund von LGPL muss man eventuell bei Qt Kompromisse eingehen, ich komme damit klar bzw. werde ich wohl irgenwann eine kommerzielle Lizenz erwerben.



  • Sorry, das ich mich erst jetzt melde, aber ich hatte eine Internetanschlussstörung. Die Version 2.9.2 lässt sich irgendwie nicht kompilieren. Da die mitgegebenen Parameter eh von der config.gcc überschrieben werden, kompiliere ich ohne weitere Parameter. Aber selbst mit den Parametern BUILD, SHARED, MONOLITHIC und UNICODE lässt sich wx nicht kompilieren. Ich erhalte immer folgenden Fehler:

    http://www8.pic-upload.de/21.07.11/mg6qlo9ye8jc.png

    Ich hoffe ihr könnt mir weiterhelfen.

    P.S.: Überall wird immer nur über Qt oder wxWidgets geredet. Warum wird GTK+ nie erwähnt?


Anmelden zum Antworten