Wie baut man mit C++ eine brauchbare GUI in vertretbarer Zeit?



  • Hi

    Wie die Überschrift schon andeutet will ich eine GUI mit ein baar funktionen bauen. Ich will das Programm aber nativ compilieren (soll also ohne .net runtime laufen).

    Gut würde ich .net verwenden hätte ich mit VS einen Designer und könnte mir die Oberfläche schnell zusammenziehen (nach klickibunti style). Aber was mach ich ohne? Alles von hand zu schreiben dauert ewig und sieht nach der 20 fachen Arbeitszeit maximal so gut aus wie das im Designer erstellte.
    Ist ja wie HTML ohne Designer (ja es geht aber bei größeren Sachen ...).

    Gibt es eventuell eine möglichkeit den .net Designer für nicht .net Anwendungen zu verwenden? Oder eine Möglichkeit sich auf andere Weise schnell eine GUI zusammenzukloppen?



  • Du könntest auf gängige Toolkits wie zum Beispiel QT oder WxWidgets zurückgreifen. Damit lässt sich recht schnell etwas auf die Beine stellen. Da gibt es bestimmt etwas im FAQ zu.

    Gruß Kimmi



  • Die MFC wären vielleicht auch noch eine Alternative zu .NET, wenn es darum geht, das .NET-Framework nicht zu benutzen. Eine MFC-Anwendung braucht zwar die MFC-DLLs, die kannst du aber statisch linken.



  • Ich finde Qt wird seinem Slogan
    Code less
    Create more
    mehr als nur gerecht. Qt ist IMO das mit Abstand am einfachsten zu benutzen und der mitgelieferte DESIGNER ist sehr gut (ich habe nur kleinere Mängel feststellen können) und ASSISTANT (dokumentation) ist praktisch und beinhaltet viele Beispiele. Die Suchfunktion ist gut. (4.5 kann man übrigens wie gtk+ aussehen lassen und ist daher wunderbar stylebar - auch ohne KDE overhead)

    Hört sich wie Werbung an, oder? 😃 🙄

    Was du mit nativ meinst ist mir nicht ganz klar - ein paar dlls mehr werdens wohl sein.



  • statisch linken



  • xBlackKnightx schrieb:

    statisch linken

    dann muss man aber 3,400eu zahlen, oder die source raushauen..



  • Pigeon schrieb:

    4.5 kann man übrigens wie gtk+ aussehen lassen und ist daher wunderbar stylebar - auch ohne KDE overhead

    Ähm, bringt aber nen GTK-Overhead, oder?
    Außerdem brauch ich zum stylen von Qt kein kde. Für was gibt es Q[Common, Windows, ...]Style-Klassen? Die soll man ableiten, ein style-plugin erstellen und verwenden. Das alles geht auch ohne kde!



  • jep.
    Für's statisch linken brauchst du eine kommerzielle Lizenz.



  • Win32++

    passt dir sowas



  • xBlackKnightx schrieb:

    statisch linken

    Google...

    ich weis nicht mal was der beitrag mit dem problem zu un hat, oder warum du keine sätze ausformulierst.



  • Was du mit nativ meinst ist mir nicht ganz klar - ein paar dlls mehr werdens wohl sein.

    Unter native Code wird unamanged Code (d.h. kein .NET) verstanden.



  • Das mit QT werde ich mir dann mal ansehen. Ich will es aber wenn dann in der open source version verwenden, was dann bedeutet ich muss zu meinem Programm die QT DLLs die ich verwende mitliefern? Das Geld für eine kommerzielle Lizenz hab ich jetzt nämlich nirgends rumliegen 😉

    Mit nativ meinte ich, dass ich keine Laufzeitumgebung ala .net/java runtime brauche. DLLs sind da eher kein Problem, die sind ja schnell mitkopiert.

    Aber wie wird denn das proffesionel im C++ Umfeld gemacht? Ich habe GUIs bis jetzt nur in C# und Java gebraucht und da gabs entsprechende Designer dazu. Wenn ich das in C++ alles selber schreibe mit positionierung -> ansehen obs gefällt -> überarbeiten und alles neu positionieren -> eventhandler erstellen -> ...
    kommt es mir doch so vor als wäre das extrem viel Arbeit die mir der Designer erspart.
    Profesionelle Webseiten werden ja auch mit einem Designer erstellt und die Feinheiten werden dann im Code ergäntzt. Ich kanns mir fast nicht vorstellen, dass im nicht .net C++ Umfeld alles per Code designed wird (da müssten ja die ganzen Bunstiffte C++ können 🤡 ).



  • Sicher, wurde auch schon erwähnt, Qt bringt nen Designer mit. Für gtk gibts z.B. Guile, wxWidgets hat glaub ich auch einen.
    Ich kann nur von dem Qt-Designre sprechen, die anderen kenn ich nicht. Ich finde den richtig gut, macht alles das was man will. Layouten, Signal/Slot verbinden, Label beschriften, Resourcen einbinden, etc.



  • Irzu schrieb:

    Das mit QT werde ich mir dann mal ansehen. Ich will es aber wenn dann in der open source version verwenden, was dann bedeutet ich muss zu meinem Programm die QT DLLs die ich verwende mitliefern? Das Geld für eine kommerzielle Lizenz hab ich jetzt nämlich nirgends rumliegen 😉

    if(OpenSource!=FreeWare) {
      return TRUE;
    }
    


  • if(OpenSource!=FreeWare) {
      return TRUE;
    }
    

    Ja schon klar. QT rennt aber unter der LGPL und das habe ich eigentlich damit gemeint 😉


  • Administrator

    GUILER schrieb:

    ... wxWidgets hat glaub ich auch einen.

    Gibt sogar mehrere. Der verbreiteste ist wohl wxFormBuilder.

    Was mich an Qt am meisten stören würde, ist der benötigte Pre-Preprocessor. Daher ziehe ich wxWidgets vor, auch wenn es eher ein veraltetes C++ ist, dafür aber ein gültiges Standard C++.

    @Irzu,
    LGPL verlangt aber nicht, dass du dein Code als OpenSource, bzw. unter die LGPL setzt.
    http://de.wikipedia.org/wiki/LGPL

    Grüssli



  • Dravere schrieb:

    Was mich an Qt am meisten stören würde, ist der benötigte Pre-Preprocessor. Daher ziehe ich wxWidgets vor, auch wenn es eher ein veraltetes C++ ist, dafür aber ein gültiges Standard C++.

    Jippie, der alte Kritikpunkt an Qt 😉
    Mich störts nicht, denn im Gegensatz zu anderen Tools wird bei Qt der Source des Programmierers nicht angerührt! Es landet alles (moc, uic, rcc) in separaten Dateien. Da die Werkzeuge (qmake, uic, ...) standardmäßig bei jeder Qt-Installation mitkommen, kann man auch nicht wirklich sagen, man braucht seprate Werkzeuge.

    Da aber dieser Punkt auch gerne aus der Gnome-Ecke kommt 😃 Die beißen sich ja grad selber an nem deutlich schlimmeren Projekt fest, Valium, äh sry Vala [*] 😛
    Das ist eine eigene Programmiersprache, mit eigenem Compiler. Der Compiler erzeugt - äh - C-Code. Der muss nochmal kompiliert werden. Toll 😃
    Da ist mir ein eigener kleiner Präprozessor lieber, der halt nur nach Q_PROPERTY. emit, oder was auch immer sucht und entsprechend Code generiert.

    [*] http://live.gnome.org/Vala


Anmelden zum Antworten