Hallo Leute,
ich habe bisher für GUI-Anwendungen :NET verwendet und habe mit zuerst
die GUI gestaltet, d.h. alle Buttons, Labels, Views,... platziert und
diese dann im Source Code "angesprochen". Nun wollte ich auf Qt
umsteigen und habe mir dazu einige Tutorials und Beispiele angeschaut.
Dabei ist mir aufgefallen, dass oftmals gar nicht der GUI Designer zum
Einsatz kommt, sondern alle Bedienelemente direkt im Source Code erzeugt
und platziert werden.
In dieser Methode sehe ich als Anfänger da keine Vorteile, eher im
Gegenteil. Könntet ihr mir sagen, warum viele alles im Source Code
machen?
Danke,
Maxi
Maxi schrieb:> In dieser Methode sehe ich als Anfänger da keine Vorteile, eher im> Gegenteil. Könntet ihr mir sagen, warum viele alles im Source Code> machen?
So wie ich das sehe gibt es nur einen Grund Controls im Sourcecode zu
erzeugen:
Nämlich dann, wenn diese erst zur Laufzeit bekannt sind, das GUI also
dynamisch aufgebaut werden soll.
Aber das sollte eigentlich die Ausnahme sein. Und wenn, dann sollte
nicht mehr passieren als ein paar User-Controls in ein Layout zu
instantiieren...
Ich vermute also Unwissenheit oder Unkenntnis des UI-Design-Tools hinter
diesem Vorgehen ;-)
Ich finde den Qt Desginer relativ unangenehm, da ist Visual Studio
deutlich komfortabler, deswegen entwerfe ich kleine Dialoge lieber
direkt im Code. Wenn man sich einmal dran gewöhnt hat geht das auch
wirklich schnell.
Boris P. schrieb:> Nämlich dann, wenn diese erst zur Laufzeit bekannt sind, das GUI also> dynamisch aufgebaut werden soll.
Das sehe ich ein und so habe ich das bisher auch gemacht. Bedienelemente
die fest auf einer Seite sind habe ich direkt platziert und wenn dann
mal ein Pop Up hochkommen soll habe ich das im Code realisiert.
Bin mal gespannt auf weitere Antworten.
Boris P. schrieb:> Ich vermute also Unwissenheit oder Unkenntnis des UI-Design-Tools hinter> diesem Vorgehen ;-)
Naja es waren auch Vorlesung aus dem Mssterstudiengang einer sogennanten
Elite-Uni dabei^^ War nur Spaß.
Wie gesagt ich habe mir verschieden Vorlesungen angeschaut und die
meisten haben zwar gezeigt, dass es den GUI Designer gibt aber ihn halt
nicht verwendet.
foobar schrieb:> Ich finde den Qt Desginer relativ unangenehm, da ist Visual Studio> deutlich komfortabler, deswegen entwerfe ich kleine Dialoge lieber> direkt im Code. Wenn man sich einmal dran gewöhnt hat geht das auch> wirklich schnell.
Da ich auch gerade mit QT rumspiele (und es nicht wirklich mag), meine
Meinung dazu:
Der Creator ist in der aktuellen Version gar nicht schlecht. Anscheinend
ist das aber erst seit den letzte Versionen so. Früher war IDE und
Designer nicht integriert, und daher hat das kaum jemand benutzt. Die
allermeisten Beispiele im Netz stammen halt aus der Zeit, als den
Designer niemand nutzen wollte.
Allerdings ist auch heute der Aufwand, ein paar Buttons "von Hand" in
ein Layout zu packen, am Ende auch nicht größer, als da im Creator eine
Form anzulegen, und auf die Elemente darin zuzugreifen.
Schau dir einfach mal den Code an, der vom Creator für die Form erzeugt
wird. Das ist so wenig, die paar Zeilen sind auch schnell von Hand
geschrieben.
Oliver
Oliver S. schrieb:> Schau dir einfach mal den Code an, der vom Creator für die Form erzeugt> wird. Das ist so wenig, die paar Zeilen sind auch schnell von Hand> geschrieben.
Aber mit dem Designer habe ich doch weniger Aufwand, weil ich zum
Beispiel Spacer einsetzen kann. Also ich kann mit die Oberfläche direkt
"schön" gestalten und muss nicht im Code jede Position
berechnen/bestimmen und dann compilieren, um zu sehen ob mir die
Anordnung dann gefällt.
Oliver S. schrieb:> Anscheinend> ist das aber erst seit den letzte Versionen so.
Der Designer ist doch schon länger enthalten, mal mindestens ab 4.0 wenn
nicht sogar noch früher
Ich kann dir von meinen Erfahrungen mit iOS berichten: Solange eine
Applikation fast nur UI-zentriert ist und keine komplexeren
Anwendungsfaelle hat, geht das mit dem UI-Designer problemlos. Das bei
vielen kleinen Apps und vor Allem den Tutorials der Fall. In der Praxis
mit komplexeren Apps zeigt sich dann aber schnell, dass der UI-Designer
recht limitiert ist und sich viele Dinge damit gar nicht realisieren
lassen. Da laeuft man dann oft erst in spaeteren Entwicklungsphasen auf.
Und wenn einem das ein paar Mal passiert ist, verzichtet man beim
naechsten Projekt gleich darauf. Entwickler haben sowieso ein gutes
Abstraktionsvermoegen, da ist die graphische sichtbare Darstellung meist
gar kein echter Vorteil.
Maxi schrieb:> Oliver S. schrieb:>> Schau dir einfach mal den Code an, der vom Creator für die Form erzeugt>> wird. Das ist so wenig, die paar Zeilen sind auch schnell von Hand>> geschrieben.>> Aber mit dem Designer habe ich doch weniger Aufwand, weil ich zum> Beispiel Spacer einsetzen kann. Also ich kann mit die Oberfläche direkt> "schön" gestalten und muss nicht im Code jede Position> berechnen/bestimmen und dann compilieren, um zu sehen ob mir die> Anordnung dann gefällt.
Man kann doch genauso im Quellcode ein QSpacerItem einsetzen. Wo ist da
das Problem? Und was soll man da berechnen müssen?
Früher habe ich die GUIs fast ausschließlich im Quellcode gemacht. Ich
war das dann so gewöhnt, und es ging schnell von der Hand. Inzwischen
nutze ich aber auch meistens den Designer. Zum Teil mache ich die GUIs
sogar noch dynamischer, indem ich die ui-Files zur Laufzeit reinlade und
gar nicht mehr in C++-Code übersetzen lasse.
Rolf Magnus schrieb:> Wo ist da> das Problem? Und was soll man da berechnen müssen?
Naja ich muss doch sagen, wo der Button liegen soll. Das man Spacer auch
im Code einsetzen kann wusste ich nicht. Bin ja noch nocht so fit mit
Qt.
Also ist es doch nicht so ungewöhnlich, GUIs im Code zu gestalten.
Ich habe mich auch lange gegen den Designer gewehrt und alles händisch
implementiert. Irgendwann habe ich dann aber festgestellt, dass der
Designer die Entwicklung einer Oberfläche doch stark beschleunigt (Weil
man sich eben die ganze "Fleißarbeit" spart) und vor allem der eigene
Code deutlich schlanker und übersichtlicher wird.
Das Einzige was ich als nervig empfinde ist das nachträgliche Einfügen
von Widgets in verschachtelte Layouts. Da bleibt oft nur das Aufbrechen
und neu anordnen.
Maxi schrieb:> Rolf Magnus schrieb:>> Wo ist da das Problem? Und was soll man da berechnen müssen?>> Naja ich muss doch sagen, wo der Button liegen soll.
Das macht man wie beim Designer auch mit einem Layout, das sich
automatisch um die Positionierung kümmert.
Also ist es doch gar nicht so unüblich alles im Code zu machen.
Dann werde ich das bei meinem nächsten Projekt mal aufgreifen und
ebenfalls versuchen alles ohne den Designer zu machen.
Maxi schrieb:> Also ist es doch gar nicht so unüblich alles im Code zu machen.
Die Frage ist so offen gestellt, dass du keine deutlichere Antwort
bekommen wirst ;) ich programmiere seit einiger Zeit QT für Embedded und
habe den Designer noch nie verwendet. Die Applikation verwendet eine
nicht allzu komplexe und pragmatische GUI und das lässt sich auch gut
und leicht im Code erzeugen. Es kommt darauf an wie gut das
Zusammenspiel von Widgets und Layouts,deren Verschachtelung und die
Möglichkeiten irgendwas nach sonstewo auszurichten verstanden wurde. Ich
kenne dazu auch unmögliche Gegenbeispiele, wo der Designer wohl besser
gewesen wäre.
Kommt also ganz auf persönliche Vorlieben, Fähigkeiten und das konkrete
Projekt an was denn nun vermeintlich einfacher ist.
Rob Chelby schrieb:> Kommt also ganz auf persönliche Vorlieben, Fähigkeiten und das konkrete> Projekt an was denn nun vermeintlich einfacher ist.
Stand heute wird es eine GUI mit ca. 8 Seiten. Ich gehe aber davon aus,
dass es in der Zukunft bis zu 15 Seiten werden.
Maxi schrieb:> Aber mit dem Designer habe ich doch weniger Aufwand, weil ich zum> Beispiel Spacer einsetzen kann. Also ich kann mit die Oberfläche direkt> "schön" gestalten und muss nicht im Code jede Position> berechnen/bestimmen und dann compilieren, um zu sehen ob mir die> Anordnung dann gefällt.
Ganz ehrlich, da bist du bei QT falsch. QT ist ein
plattformübergreifendes Framework, das ist sowieso nicht für pixelgenaue
Layoutgestaltung gedacht. Ohne Layouts geht da fast gar nichts, und mit
Layouts macht das eh, was es will.
Es hindert dich ja niemand, den Designer zu benutzen. Alles geht, nichts
muß.
Oliver
Moin,
ein Hauptgrund für die Erstellung der GUI im Sourcecode ist gerade bei
kleinen Beispielprojekten, dass so nicht noch extra eine .ui-Datei nötig
wird.
Gerade wenn nur zwei, drei Elemente angeordnet werden sollen oder
einfach nur ein Menü aufgebaut wird, geht das oft genauso gut im Code.
(Menü z.B. mit QKeySequence die Standardshortcuts des Systems
verwenden).
AUßerdem geht es in den meisten Beispielen um Code, bzw das "wie", nicht
um Optik.
Grüße
Andreas Lang