stackedwidget immer an mainwindow-Größe anpassen

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Karsten Böhme
User
Beiträge: 86
Registriert: Sonntag 23. Dezember 2012, 07:54

Hallo miteinander,

ich versuche ein StackedWidget in einem MainWindow zu platzieren und möchte, dass es immer das gesamte Window ausfüllt. Mit dem Designer bekomme ich das nicht hin. Ein Layout kann ich einem einzelnen Element nicht zuweisen. Übersehe ich etwas, oder kann ich das wirklich nur im Code anpassen (über Resize) ?

Vielen Dank für Eure Tipps !

Karsten
BlackJack

@Karsten Böhme: Das kann ich nicht nachvollziehen. Wenn ich dem `centralwidget` (`QWidget`) im Designer ein Layout verpasse, dann hält sich das `QStackedWidget` da auch ganz normal dran.
Karsten Böhme
User
Beiträge: 86
Registriert: Sonntag 23. Dezember 2012, 07:54

Danke für die Antwort . Ich glaube, ich habe hier ein Verständnisproblem. Habe das Stackedwidget jetzt in ein V-Layout gepackt, dort passt es sich auch sofort an die Größe des Layout-Containers an. Das Problem ist, wenn ich die Größe des Fensters ändere, dann behält der Container seine Größe. Soll heißen, die Navigationspfeile des StackedWidgets rühren sich nicht von der Stelle (werden verdeckt wenn das Fenster verkleinert wird) !

Karsten
BlackJack

@Karsten Böhme: Wie gesagt, das kann ich nicht nachvollziehen. Ich wähle im Designer die MainWindow-Vorlage. Der Objektbaum sieht dann so aus:
[codebox=text file=Unbenannt.txt]MainWindow
centralwidget (kein Layout)
menubar
statusbar[/code]
Dann ziehe ich ein `QStackedWidget` auf das Fenster. Folge:
[codebox=text file=Unbenannt.txt]MainWindow
centralwidget (kein Layout)
stackedWidget
page
page_2
menubar
statusbar[/code]
Das stackedWidget ist ja deutlich kleiner als die Fläche für das centralwidget, also kann man im centralwidget leicht einen Rechtsklick ausführen und dort dann ein Layout auswählen. Folge:
[codebox=text file=Unbenannt.txt]MainWindow
centralwidget (Vertikales Layout)
stackedWidget
page
page_2
menubar
statusbar[/code]
Und ab jetzt füllt das stackedWidget auch immer brav das ganze Fenster (abzüglich Menü- und Statuszeile natürlich). Auch wenn man die Fenstergrösse ändert. Hier mal die UI-Datei die dabei bei mir raus kommt (zusätzlich mit `frameShape` um eine Linie um das stackedWidget zu zeichnen, damit man den eingenommenen Platz besser sehen kann):
[codebox=xml file=Unbenannt.xml]<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QStackedWidget" name="stackedWidget">
<property name="enabled">
<bool>true</bool>
</property>
<property name="frameShape">
<enum>QFrame::Box</enum>
</property>
<widget class="QWidget" name="page"/>
<widget class="QWidget" name="page_2"/>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>21</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>[/code]
Karsten Böhme
User
Beiträge: 86
Registriert: Sonntag 23. Dezember 2012, 07:54

@BlackJack :

Du hast Recht (war auch nicht anders zu erwarten) , ich habe einen Layout-Container in das Centralwidget gelegt, dahinein des Stackedwidget (was sich auch sofort anpasste) . Der Container hat sich nicht anpassen lassen. Mit Deiner Reihenfolge hat es funktioniert.

Danke
Antworten