Вставка макета в QDialog, когда сигнал испускается из поля со списком

У меня есть пользовательский интерфейс, созданный в qtdesigner, который выглядит так:

введите здесь описание изображения

и я хочу вставить другой макет, содержащий пару виджетов, между групповым полем под названием «Уравнение» и макетом, содержащим два групповых поля под названием «Подстрочные индексы» и «Подключенные элементы».

Причина, по которой я не знаю, как вставить этот дополнительный макет, заключается в том, что когда я смотрю на инспектор объектов в qtdesigner, я вижу это:

введите здесь описание изображения

который не говорит мне имя вертикального макета, который содержит все остальные виджеты и макеты в диалоговом окне.

Я загружаю пользовательский интерфейс следующим образом:

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`?

person pbreach    schedule 11.07.2016    source источник


Ответы (1)


Макет, который содержит все остальные, будет макетом диалогового окна, поэтому вы можете попробовать что-то вроде этого:

    def enableInitialValueEntry(self):
        ...
        if vartype == "Stock":
            ...
            main_layout = self.layout()
            main_layout.insertLayout(2, hbox)
person ekhumoro    schedule 11.07.2016
comment
Ок здорово! Я искал макет в документации QDialog и ничего не нашел. Попробую позже. - person pbreach; 12.07.2016