QTabWidget nicht in Layout integrierbar

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Benutzeravatar
MicheMache
User
Beiträge: 10
Registriert: Donnerstag 30. Juli 2020, 15:46

Hallo zusammen,

ich bin atm. dabei Layouts für eine GUI zu machen und übe noch etwas vor mich hin.
Leider bin ich über ein kleines Problem gestolpert, das ich iwie nicht lösen kann, da ich es nichtmal verstehe :roll:

Folgendes :

Ich zeichne diverse Layouts (Horizontal, Vertikal, GridLayout) in ein QHBoxLayout mit folgendem Code :
(bisher nur zur Übung, um die Layouts und die Anordnung zu verstehen)

Code: Alles auswählen

    def createLayout(self):
        
        ############ LayoutTests #############################
             
        HLayout1 = QtWidgets.QHBoxLayout()
        VLayout1 = QtWidgets.QVBoxLayout()
        VLayout2 = QtWidgets.QVBoxLayout()
        VLayout3 = QtWidgets.QVBoxLayout()
        HLayout2 = QtWidgets.QHBoxLayout()
        
        GridLayout = QtWidgets.QGridLayout()
        StackedLayout = QtWidgets.QStackedLayout()
        TabWidget = QtWidgets.QTabWidget()
        
        VLayout1.addWidget(Color("black"))
        VLayout1.addWidget(Color("red"))
        VLayout1.addWidget(Color("yellow"))
        
        VLayout1.setContentsMargins(0,0,20,0)
        VLayout1.setSpacing(20)
        
        HLayout1.addLayout(VLayout1)
        
        HLayout1.addWidget(Color("green"))
        
        VLayout2.addWidget(Color("blue"))
        VLayout2.addWidget(Color("purple"))
        
        HLayout1.addLayout(VLayout2)
        
        GridLayout.addWidget(Color("Grey"), 0, 3)
        GridLayout.addWidget(Color("black"), 1, 0)                
        GridLayout.addWidget(Color("DarkGrey"), 1, 1)
        GridLayout.addWidget(Color("orange"), 2, 1)                     
        
        HLayout1.addLayout(GridLayout)
        
        TabWidget.setDocumentMode(False)
        TabWidget.setTabPosition(QtWidgets.QTabWidget.North)
        TabWidget.setMovable(True)
        
        for n, color in enumerate(["red", "green", "blue", "yellow"]):
            TabWidget.addTab( Color(color), color)
            
        VLayout3.addWidget(TabWidget)
        #HLayout1.addLayout(VLayout3)

        Widget = QtWidgets.QWidget()
        Widget.setLayout(HLayout1)
        self.setCentralWidget(Widget)
Das Ergebnis davon ist :

Bild

Wenn ich jetzt die bisher auskommentierte Zeile :
#HLayout1.addLayout(VLayout3)

wieder aktiviere, wird nur noch dieses QTabWidget angezeigt als einziges :

Bild

Ich hätte jetzt erwartet, daß dieses "VLayout3" wie alle anderen Layouts in das "HLayout1" integriert wird.
Warum ist dieses QTabWidget so dominant ? Gibt´s vielleicht eine Einstellung, das zu verhindern ?

In der Doku finde ich auf Anhieb keinen Hinweis und die Suche im Netz brachte mich leider auch nicht weiter.
Hättet Ihr einen Tip ?
Benutzeravatar
MicheMache
User
Beiträge: 10
Registriert: Donnerstag 30. Juli 2020, 15:46

So, ich antworte mir mal selbst....

Es ist anscheinend nur möglich ein QTabWidget in einer GroupBox neben anderen GroupBox´n zu haben.
Ohne die GroupBoxes wird das QTabWidget dominant und verdrängt alle anderen.
Antworten