Eine Gui benutzen oder selber machen?



  • Eine allgemeine Empfehlung für ein Toolkit kann man nicht abgeben, aber eines neu zu entwicklen ist extrem aufwendig. Ich rate DIR davon ab.
    Willst du nur für Windows entwickeln und hast keine hohen Anforderungen an das GUI, dann wäre MFC noch tauglich.
    Prinziell würde ich Qt und wx empfehlen, seit Qt 4.5 mehr zu Qt (wegen LGPL).
    Installier das Qt-SDK und los gehts, egal ob auf Win/OSX/Linux. Mir gefällt beim Qt-Creator die gute Integration des GUI-Editors, der auch gleich den Code für die Ereignis-Funktion anlegen kann (die Qt-Integrationen für VS/Eclipse können es nicht). Das ist noch einfacher als MFC mit VS.



  • Ich hab jetzt mal den QT Creator ausprobiert, ich bin total begeistert.
    Man kann das Layout blitzschnell entwerfen nur noch die event funktionen usw. muss man selber schreiben, der Qt-Creator is einfach hammer.

    Also ich lerne Aufjedenfall Qt, bevor ich aber das tue werde ich mich noch mit dem C++ Standard vertrauter machen müssen! Wenn ich C++ so komplett kan wo nicht mehr viel fehlt lern ich dan die GUI Qt und danach beschäftige ich mich mal vllt. mit WinAPI und schreib eine kleine GUI ohne zusatzfunktion die nur die GUI Elemente halt drauf hat! Als Übung.

    Thx für eure Antworten!
    Mfg Wikinger75!



  • softwarevoid schrieb:

    Qt ist scheisse,
    man kann damit mit VS nicht gescheit statisch linken. Meistens geht library dadurch kaputt, wenn man was rumkonfiguriert. Und schwul ist auch dieses 100 mal rebuilden bis es etwas ansatzweise geht, das frisst Zeit von Wochen.

    Das gilt höchstens für die nicht-kommerzielle Variante. Mit Zugriff auf den Qt-Support kriegst man eventuelle Klippen schnell umschifft. :p

    softwarevoid schrieb:

    Und es gibt auch keine Anleitung für VS wie man ein Icon auf die exe drauf tut.

    Das 1. Icon in den Ressourcen!?

    softwarevoid schrieb:

    Will man etwa ohne VS debuggen????

    Hä? Wie bitte?

    Zu Qt:
    Wir setzen Qt 4 bei uns ein, um die GUIs für unsere Maschinesteuerungs-Software zu machen.
    Wir haben eine kleine Beschreibungssprache mit der man die Datenstrukturen und Statemachines beschreiben kann. Aus diesen Beschreibung generieren wir C++-Code-Rahmen, der die Datenstrukturen und Statemachines repräsentiert (inkl. Datenspeicherung, Sprachübersetzung, Validierung, usw.).
    Dadurch entsteht eine graphenartike Datenstruktur. Wir erzeugen hierfür jeweils dynamisch eine GUI, in dem die (Daten-)Struktur zur Laufzeit interpretiert wird (es gibt ein Ding, das z.B. weiß mit was man eine Geschwindigkeit, Länge, CAD-Modell oder Dateinamen darstellt).
    Da sind oft vielfache geschachtelte Layout mit Widgets im hohen dreistelligen Bereich am Start.
    Das funktioniert aber mit Qt ziemlich einfach und ist trotzdem noch sehr flott und stabil.
    Ich finde Qt ziemlich gut. Es ist leicht zu lernen und man kann komplexe und schöne Sache machen. Manche Dinge sind ein bisserl komisch (convenience-Funktionen, die kaputt gehen und die man dann von Hand nach bauen muss, wenn man eingreift, z.B. bei Drag & Drop im QTreeWidget), aber die stehen normalerweise nicht im Weg.
    Wir haben hier auch einige selbstprogrammierte grafische Widgets im Gebrauch (z.B. Konfiguration des Wechslersystems der Maschine). Die ließen sich sehr leicht erstellen und sehen echt gut aus.
    Also wenn einen Nokia nicht stört, sollte man Qt zumindest mal antesten.



  • Die Ereignis-Funktion kann der GUI-Editor auch anlegen:
    einfach rechte Maustaste auf z.B. einen PushButton im GUI-Editor und dann "Go to Slot..." auswählen. Bei PushButton dann "Clicked()" auswählen und er legt automatisch die Funktion in der Klasse an und springt dorthin.
    Ein Connect brauch nicht gemacht zu werden, denn Qt macht auch Connect-Slots-By-Name, d.h. deine Ereignisfunktion (Slot) heisst wie das Control + Ereignis. Genial einfach für Einsteiger.



  • Das gilt höchstens für die nicht-kommerzielle Variante. Mit Zugriff auf den Qt-Support kriegst man eventuelle Klippen schnell umschifft.

    scheisse für mich ^^

    Das 1. Icon in den Ressourcen!?

    sry mein fehler. mit dem icon kein problem mehr. liegt nicht an qt - sorry

    Hä? Wie bitte?

    damit wollt ich ausdrücken dass es keinen besseren debugger als der von VS gibt.



  • Hmm, naja die frage kann ich ja auch mal stellen,damit ich wneigstens sehe wie das genau Arbeitet.^^

    Gibt es irgentwelche kleinen OpenSource GUI's welche echt nur die Grafische Oberfläche implementieren? Am besten Objekt Orientierte wie gewöhnlich halt.
    Aus nicht komplexen werken kann man leichter lesen^^
    Möcht mal sehn wie das aufgebaut ist^^

    Mfg Wikinger75!



  • ich hab auch mal ne eigene kleine GUI gemacht, und das hat spass gemacht, wenns auch nicht so umfangreich ist. Also wenn du bock darauf hast dann machs und lass es dir nicht von so einigen missmachern hier zerreden. Und diese ganzen anderen GUI's wie wx (das ganz besonders) die hasse ich persönlich (ist nur meine meinung). Das ist viel heisse luft um gar nichts, man hat ein dutzend libs und weiss nicht wohin damit, und das man erst mal rausfinden muss, dass das kompilieren nur mit einer unix shell wie msys oder so möglich ist macht das chaos perfekt. Und diese Programme sind später mehrere MB's gross 👎 . Ich bleib lieber bei WinAPI und wenn ich mal umsteigen sollte zu linux, dann lerne ich die dortige schnittstelle und schreib lieber meine programme neu.



  • P.S. als kleine kompakte GUI würde ich dir FLTK empfehlen, da ist das chaos nicht ganz so gross



  • @player4245: Das haben aber meist alle Poster angemerkt, dass es von der Projektgröße bzw. vom GUI-Umfang abhängt, was man nehmen könnte.
    Gerade für einen Einsteiger sind die Toolkits optimal. Gleich mit der WinAPI anzufangen ist schwer und extrem aufwendig. Das bzw. eine Toolkit-Eigenentwicklung sollte man erst versuchen, wenn man mindestens ein Toolkit gut kennt und weiss was intern abläuft. Desweiteren muss man sagen das Qt und wx (nicht FLTK) mehr als GUI beinhalten: Datenbank, XML, Netzwerk, Webbrowser (WebKit), Datei/Verzeichnis-Klassen. Und das alles objektorientiert, WinAPI ist nicht objektorientiert.
    Beim statischen Linken wird die Exe nicht zu groß, bei wx kann man auf 1 bis 2 MB kommen und das ist heutzutage ok. Nur wer Qt mit LGPL macht wird etwas fette Installer haben (mit LZMA gepackte Qt-DLLs ca. 6 MB).



  • ja wx mag schon mehr haben als nur fenster aber mir ist es einfach zu fett und unübersichtlich habs mal benutzt aber wieder runtergeschmissen weils mir zu gross ist. da finde ich winapi viel besser. das einzige was mich überzeugt hat war fltk, denn da hatte man nur ein paar libs. bei wx ist es ja so das man ein haufen libs mit kryptischen namen hat, und wenn man config nutzt werden die programme 29mb gross, da alle mitgelinkt werden



  • player4245 schrieb:

    ja wx mag schon mehr haben als nur fenster aber mir ist es einfach zu fett und unübersichtlich habs mal benutzt aber wieder runtergeschmissen weils mir zu gross ist. da finde ich winapi viel besser. das einzige was mich überzeugt hat war fltk, denn da hatte man nur ein paar libs. bei wx ist es ja so das man ein haufen libs mit kryptischen namen hat, und wenn man config nutzt werden die programme 29mb gross, da alle mitgelinkt werden

    gilt das für dich mit Qt auch so?



  • qt kann ich nicht genau beurteilen, aber ich denke da wirds auch so sein



  • player4245 schrieb:

    ja wx mag schon mehr haben als nur fenster aber mir ist es einfach zu fett und unübersichtlich habs mal benutzt aber wieder runtergeschmissen weils mir zu gross ist. da finde ich winapi viel besser.

    Na klar, die WinAPI ist natürlich ein sehr kompaktes Framework, dass zudem noch sehr modern programmiert ist und echt leicht zu erlernen ist... und hey, in Zeiten von 500 GB Festplatten und DSL 6000 oder mehr ist es natürlich schon der Horror, wenn ein Binary ganze... 2,9 MB (!!!!) benötigt. Wo kommen wir denn da hin...



  • Ein haufen falscher Informationen hier.

    FLTK hat nicht "ein paar" Libs. Es hat genau eine einzige Lib die man ob der geringen Grösse normalerweise statisch linkt. Hello World -> 200 KB. Komplett statisch gelinkt, also auch CRT statisch. Visual Stuio 9.

    wx kann man ebenfalls als eine einzige statische Lib erstellen, genauso als eine einzige grosse DLL. Nennt sich bei wx Monolithic. Die Monolithic-DLL ist 5.8 MB gross (wx 2.8, Visual Studio). Hello World -> 1.3 MB, komplett statisch gelinkt.

    Msys oder sonstigen Unix-Crap braucht man für keine der beiden. Ausser vielleicht man verwendet einen Unix-Compiler, keine Ahnung, Unix interessiert mich nicht die Bohne.



  • das muss man aber erst mal wissen.

    P.S. ohne msys möglich vielleicht, aber man gewinnt eher im lotto, als das man es schafft ein selbstgeschriebenes hallo welt zu kompilieren



  • player4245 schrieb:

    das muss man aber erst mal wissen.

    Da ist es natürlich viel besser wenn man erstmal irgendwas daherredet, obwohl man sich nichtmal ernsthaft mit der Materie befasst hat 👍

    P.S. ohne msys möglich vielleicht, aber man gewinnt eher im lotto, als das man es schafft ein selbstgeschriebenes hallo welt zu kompilieren

    Also ich hab z.B. GTK+ und gtkmm (beide eher in der Unix-Welt beheimatet) schon mehrfach und ohne gigantischen Aufwand mit dem VS & VC++ ans Laufen gebracht.



  • Und sowohl FLTK als auch WX enthalten Visual Studio Projekte. Noch einfacher als ein Doppelklick, ein Rechtsklick und ein Linksklick und ein wenig warten geht's ja wohl nicht mehr...



  • Hmm naja wie dem auch sei.
    Schöne lernstunde hab ich hier gehabt 😉

    Ich werde erstmal Qt lernen und mir FLTK anschauen.
    Ich finde so währen sie gut zu benutzen:
    QT <-- Umfangreiche Projekte.
    FLTK <-- Kleinere Projekte.

    Ich werde mich aufjedenfall erst mal mit der richtung Funktionalität machen und die C++ Standart Bib komplett auswendig lernen 😃 . Danach Qt und vllt. FLTK lernen. Boost mach ich vllt. noch dazu und danach lerne ich die WinAPI und wen ich diese gut behersche, dann schreib ich mir ne eigene kleine GUI die man sowohl statisch als dynamisch linken können soll. Wenn ich damit zufrieden bin kann ich sie durch FLTK ersetzen 😃 . Naja genaueres werde ich auch noch sehen, vllt. lern ich auch noch unter UNIX Grafische Oberflächen programmieren und mach ne systemUnabhängige GUI draus...

    FLTK kuck ich mir dan mal den Code an wenns OpenSource ist.

    Danke für die Info Leut's.
    Mfg Wikinger75!



  • schon mal auf die idee gekommen, dass nicht jeder vc++ hat



  • player4245 schrieb:

    schon mal auf die idee gekommen, dass nicht jeder vc++ hat

    Das gibt's in der Express Edition gratis zum runterladen... und für Windows ist es imo die beste Lösung. Wer meint er müsse sich selbst das Leben schwermachen soll sich bitte nicht beklagen.


Anmelden zum Antworten