Layouten ohne LayoutManager

Alles rund um die Programmierung mit Qt
Antworten
Guiguy2
Beiträge: 3
Registriert: 10. Oktober 2008 09:41

Layouten ohne LayoutManager

Beitrag von Guiguy2 »

Guten Tag

Ich habe noch keine allzugrosse Erfahrung mit Qt und bin dabei, ein bestehendes Projekt zu übernehmen, das aus einem GUI (QtDesigner) und weiterem Code besteht.

Wenn ich das GUI im QtDesigner anschaue, ist es bereits gelayoutet, jedoch wurden keine Layouts (wie z.B. QVBoxLayout) verwendet. Dies sehe ich in der Komponentenhierarchie und es hat auch keine roten Linien, die Layouts normalerweise anzeigen. Auch im zusätzlichen Code tauchen die graphischen Komponenten nicht auf. Trotzdem sind die Komponenten verschieden angeordnet.

Ich möchte gerne verstehen, wie das geht, damit ich im gleichen Stil fortfahren kann.

Wenn ich selbst im Designer eine Komponente per Drag&Drop hinzufüge, bleibt diese einfach statisch so gross wie ich sie aufziehe, sie verhält sich ganz anders als die bereits vorhandenen Komponenten, obwohl ich keinen Unterschied sehe.

Kann mir jemand weiterhelfen?

Vielen Dank.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Du könntest ein entsprechendes ui-File mal zur Verfügung stellen, dann kann man sich das besser vorstellen.

Sollte allerdings wirklich kein Layout verwendet worden sein, dann würde ich dir dringend empfehlen, dies nachzuholen, da du schon bei einer anderen Schriftgröße darstellungsprobleme haben müsstest...
Guiguy2
Beiträge: 3
Registriert: 10. Oktober 2008 09:41

Layout

Beitrag von Guiguy2 »

Hallo upsala

Ich habe das ui-File etwas vereinfacht und angehängt. Der Reiter working war schon da, Not working habe ich hinzugefügt.

Die Komponenten haben ganz offensichtlich schon eine Layoutregel, sie sind übereinander angeordnet. Allerdings finde ich nicht heraus, woher dieses Verhalten stammt, da im ObjectInspector kein einziges Layout auftaucht.

Wenn ich ein Layout per Drag and Drop hinzufüge, wird es in die Hierarchie eingefügt und im Designer wird das Layout durch eine rote umfassende Linie dargestellt. Beides ist aber bei den schon vorhandenen Komponenten nicht der Fall.

Wenn ich kein Layout hinzufüge, kann ich x und y-Position und Höhe und Breite einer neu hinzugefügten Komponente durch aufziehen frei bestimmen. Das ist aber bei den schon vorhandenen Komponenten auch nicht der Fall, die sitzen fest an ihrer Position, als ob sie durch ein Layout gebunden wären, ich kann es nur nicht finden.

Ich hoffe, das ist verständlicher ausgedrückt.
Besten Dank
Dateianhänge
demo.ui
Ein abstrahiertes ui-File
(9.6 KiB) 113-mal heruntergeladen
MiKla
Beiträge: 134
Registriert: 29. Juli 2007 15:29

Beitrag von MiKla »

aus der ui Datei:
<widget class="QWidget" name="centralwidget" >
<layout class="QVBoxLayout" >
...
<widget class="QTabWidget" name="tabWidgetMain" >
...
<layout class="QGridLayout" >
also "centralwidget" ist ein vertikales Layout und das Tabwidget ist Gridlayout.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Guiguy2
Beiträge: 3
Registriert: 10. Oktober 2008 09:41

Besten Dank

Beitrag von Guiguy2 »

Ah ja danke, die Lösung ist eigentlich sehr einfach und genau das, was ich suchte.

Mich hat irritiert, dass das so zugewiesene Layout, dann nicht als Eigenschaft der übergeordneten Komponente irgendwo auftaucht. (Ausser wenn man das ui-File als plain-text anschaut.)

Der Link ist super.

Besten Dank vorerst mal, ich muss noch weiterexperimentieren.
Antworten