Eine Gui benutzen oder selber machen?
-
Hey Leute.
Mich zereist letzter Zeit die frage ob ich mir ne eigene GUI machen sollte.Allerdings frage ich mich auch warum ich das Rad neu erfinden sollte.
Es gibt ja Bibliotheken wie wxWidgets oder Qt. Ich persönlich würde schon Qt lernen, da es sehr gut und flexibel sein soll, jedoch stört mich da die Lizenz.
Im moment beschäftigte ich mich mit wxWidgets, doch da ist einiges Komplexer als in Qt. Vorallem da wxWidgets nicht selber Zeichnet, sondern die nativen widgets der Betriebsystems nutzt.Dazu gibt es für wxWidgets nur englische tutorials, damit komm ich halbwegs klar.
Für Qt finde ich auch haufenweise deutsche sachen und dazu ist Qt komplet systemunabhängig, z.b bietet er auch noch einen einsprungspunkt für DLL's, das tut wx nicht, da muss man sich den selber basteln.Also fakt ist:
wxWidgets : Hier ist gut das es für alle fälle immer umsonst ist, jedoch
ist jedes tut auf englisch und da meines noch nicht so gut ist
dauert es längere Zeit, bis ich ein tutorial durchgelesen habe.Qt: Soll sehr gut sein angeblich, Styling entspricht nach meinem Quellen
dem von CSS. Wird viel gelobt halt.Kleine Frage: Welche GUI würde sich am meisten zu erlernen lohnen?.Währe auch für eine Begründung dankbar^^
WX Frage: Ist es auch möglich mit wx selber zu Zeichnen?
Da mir wx nicht so wirklich passt, von der aufbau weise, t.b kein DLL einsprungs Punkt, usw. und Qt mir wegen der Lizenz nicht passt.
Überlege ich mir eine eigene GUI zu basteln, hab auch sogar gute Deutsche tuts gefunden für die WinApi.
Hab mal folgende Pro- Contra- -Argumente gesammelt:
Pro (Für die eigene GUI)
- Eigene Struktur erstellbar.
- Aufbau nach eigenen vorstellungen.
Contra (gegen die eigene GUI)
- Warum das RAD neu erfinden?
- Fehler könnten sich in die GUI schleichen.
- Dauert lange zu basteln.
- Kenntnisse von WinApi müssen vorhanden sein.
- Für Systemunabhängigkeit müssen auch Kenntnisse über X11 da sein usw.Dieses Projekt währe sicher nur als Übung gut oder?
So meine Fragen:
1.) Lohnt es sich eig. eine eigene GUI zu basteln?
2.) Wie lange würde das dauern?
3.) Wo gibt es noch tutorials zu WinApi?
4.) Wo gibt es tutorials zu X11?
5.) Wo gibt es tutorials für die Mac-OS Lib?Mfg Wikinger75!
-
wiso stört dich bei qt die lizenz? ab 4.5 gibt's die auch unter der lgpl d.h. du darfst auch es auch in einem "Closed Source" programm verwenden solagne du dynamisch linkst.
ok und dann noch...
wie du bereits sagtest "Warum das rad neuerfinden". Klar kannst du mit winapi und Co. alles selbst machen (nichts anderes tut Qt/wxWidget ) aber meiner meinung nach hat das einige gravierende Nachteile (du machst dir viel arbeit, du bist nicht plattformabhänging,...).
Ich würde dir auch zu Qt raten da ich damit gute erfahrungen gemacht hab.
-
Leider its die Meinung nicht sehr weit verbreitet, ABER:
GUI ist nur für Bequemlichkeit
GUI und Funktionalität sollte getrennt sein (->egal welches framework du nutzt ... kannst auch verschiedene testen)
Deshalb mach dir keine eigene gui ... konzentriere dich lieber auf die Programmfunktionen.
-
Wieviele Fenster hat denn dein Programm?
Ich habe gerade für ein kleines Progrämmchen FLTK verwendet, obwohl ich normalerwseise mit wxWidgets arbeite. Einfach weil es nur ein einziges Fenster hat und sich da der Bloat namens wxWidgets nicht lohnt. 300 KB Funktionalität + 1.3 MB wxWidgets, da stimmt einfach die Relation nicht...
Ich denke bei QT sieht es nicht anders aus.
Für mein Hauptprojekt, mit hunderten von Fenstern verwende ich auch weiterhin wx, gerade *weil* es die nativen Controls verwendet und nicht selberzeichnet. Keine Ahnung wieso du das als Nachteil siehst. Und von MOC fange ich lieber gar nicht erst an...
-
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. Und es gibt auch keine Anleitung für VS wie man ein Icon auf die exe drauf tut. Will man etwa ohne VS debuggen????
-
wiso stört dich bei qt die lizenz? ab 4.5 gibt's die auch unter der lgpl d.h. du darfst auch es auch in einem "Closed Source" programm verwenden solagne du dynamisch linkst.
ok und dann noch...
wie du bereits sagtest "Warum das rad neuerfinden". Klar kannst du mit winapi und Co. alles selbst machen (nichts anderes tut Qt/wxWidget ) aber meiner meinung nach hat das einige gravierende Nachteile (du machst dir viel arbeit, du bist nicht plattformabhänging,...).
Ich würde dir auch zu Qt raten da ich damit gute erfahrungen gemacht hab.
Hmm joa, wenn des so ist sieht das mit Qt schon besser aus.
Werde ich wohl auch wahrscheinlich lernen.Leider its die Meinung nicht sehr weit verbreitet, ABER:
GUI ist nur für Bequemlichkeit
GUI und Funktionalität sollte getrennt sein (->egal welches framework du nutzt ... kannst auch verschiedene testen)
Deshalb mach dir keine eigene gui ... konzentriere dich lieber auf die Programmfunktionen.Ja klar so sind sie auch alle aufgebaut...
So siehts aufjedenfall für mich aus.
Wenn man ne eigene GUI macht kann man das auch so aufbauen...Wieviele Fenster hat denn dein Programm?
Ich habe gerade für ein kleines Progrämmchen FLTK verwendet, obwohl ich normalerwseise mit wxWidgets arbeite. Einfach weil es nur ein einziges Fenster hat und sich da der Bloat namens wxWidgets nicht lohnt. 300 KB Funktionalität + 1.3 MB wxWidgets, da stimmt einfach die Relation nicht...
Ich denke bei QT sieht es nicht anders aus.
Für mein Hauptprojekt, mit hunderten von Fenstern verwende ich auch weiterhin wx, gerade *weil* es die nativen Controls verwendet und nicht selberzeichnet. Keine Ahnung wieso du das als Nachteil siehst. Und von MOC fange ich lieber gar nicht erst an...
Hmm über FLTK hab ich auch schon nachgedacht...
Es ist mit wxWidgets einfach schwerer eigene Styles zu machen deswegen.
Bei QT ab 4.0 kan man angeblich einstellen ob man die nativen benutzt oder die selbst gezeichneten. Ka^^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. Und es gibt auch keine Anleitung für VS wie man ein Icon auf die exe drauf tut. Will man etwa ohne VS debuggen????
Ich benutze Code::Blocks also kann mir das egal sein
.
Also lohnt es sich Prinzipiel nicht eine eigene GUI zu machen.
Gut ich werde wahrscheinlich Qt lernen.Mal ne kleine Frage am Rande:
Unter Windows wurde oder wird ja immer WinApi verwendet, hab gelesen,dass das nicht mehr weiterentwickelt wird und durch dotNET ersetzt werden soll.
Eine GUI die schon dadrunter läuft is Avalon , das is wen das stimmt was ich gelesen haba uch shcon in Vista drin, also das dotNET.
Bringt das irgent einen Nachteil, wenn man WinApi unter Windows benutzt?Mfg Wikinger75!
-
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