2016-07-11 9 views
1

Ich habe einen ui in QtDesigner geschaffen, die wie folgt aussieht:Einfügen Layout in QDialog, wenn das Signal von Combobox emittiert wird

enter image description here

und ich möchte ein anderes Layout ein paar Widgets zwischen dem groupbox einzufügen enthält Titel "Gleichung" und das Layout mit den beiden Gruppenfeldern "Indizes" und "Verbundene Elemente".

Der Grund, warum ich nicht sicher bin, wie diese zusätzliche Layout einzufügen ist, dass, wenn ich im Objektinspektor in QtDesigner sehe ich sehen:

enter image description here

, die sagen Sie mir nicht den Namen das vertikale Layout, das alle anderen Widgets und Layouts im Dialogfenster enthält.

Ich lade die ui wie folgt zusammen:

from PyQt4.QtGui import * 
from PyQt4.QtCore import * 
from PyQt4 import uic 

class EquationEditor(QDialog): 

    def __init__(self, parent=None): 
     super().__init__(parent) 

     uic.loadUi('equation_editor.ui', self) 

     # Insert a layout containing a couple of widgets on index change of 
     # the combobox 
     self.typeBox.currentIndexChanged.connect(self.enableInitialValueEntry) 

    def enableInitialValueEntry(self): 
     vartype = self.typeBox.currentText() 

     if vartype == "Stock": 
      hbox = QHBoxLayout() 
      hbox.addStretch(1) 

      hbox.addWidget(QLabel("Initial Value")) 
      hbox.addWidget(QLineEdit()) 

      #How can I insert the layout `hbox`? 

Antwort

1

Das Layout, das die anderen alle das Layout der Dialog sein enthält, so dass Sie so etwas wie dies versuchen:

def enableInitialValueEntry(self): 
     ... 
     if vartype == "Stock": 
      ... 
      main_layout = self.layout() 
      main_layout.insertLayout(2, hbox) 
+0

Oh okay, große ! Ich habe das Layout in der QDialog-Dokumentation durchsucht und nichts gefunden. Werde es später versuchen. – pbreach