Forum: PC-Programmierung GUI Design im Source Code


von Maxi (Gast)


Lesenswert?

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

von Borislav B. (boris_b)


Lesenswert?

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 ;-)

von foobar (Gast)


Lesenswert?

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.

von Maxi (Gast)


Lesenswert?

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.

von Oliver S. (oliverso)


Lesenswert?

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

von Maxi (Gast)


Lesenswert?

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

von Quack (Gast)


Lesenswert?

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.

von Rolf Magnus (Gast)


Lesenswert?

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.

von Maxi (Gast)


Lesenswert?

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.

von lalala (Gast)


Lesenswert?

Letztendlich wird die GUI immer im Code erzeugt. Die Frage ist nur ob 
man diesen Code selber schreibt.

von Philip K. (philip_k)


Lesenswert?

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.

von Rolf Magnus (Gast)


Lesenswert?

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.

von Maxi (Gast)


Lesenswert?

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.

von Rob C. (rob_chelby)


Lesenswert?

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.

von Maxi (Gast)


Lesenswert?

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.

von Oliver S. (oliverso)


Lesenswert?

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

: Bearbeitet durch User
von Andreas L. (andi84)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.