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.
Layouten ohne LayoutManager
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...
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...
Layout
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
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
Besten Dank
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.
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.