Найти - Пользователи
Полная версия: Поиск виджетов в форме.
Начало » GUI » Поиск виджетов в форме.
1
Korinn
Есть QFormLayout из которой нужно получить список виджетов, которые она содержит. Сама форма имеет следующее содержание:
        self.formWidget = QtWidgets.QWidget()
        self.addItemForm = QtWidgets.QFormLayout()
        self.itemType = QtWidgets.QComboBox()
        self.itemType.setInsertPolicy(QtWidgets.QComboBox.InsertAtTop)
        self.itemType.setEditable(True)
        self.model = QtWidgets.QComboBox()
        self.model.setEditable(True)
        self.location = QtWidgets.QComboBox()
        self.location.setEditable(True)
        self.diapason = QtWidgets.QComboBox()
        self.diapason.setEditable(True)
        self.comboBoxDatas()
        self.inter = QtWidgets.QSpinBox()
        self.lastCheck = QtWidgets.QDateEdit()
        self.lastCheck.setCalendarPopup(True)
        date = QtCore.QDate.currentDate()
        self.lastCheck.setDate(date)
        self.hbox = QtWidgets.QHBoxLayout()
        self.addBtn = QtWidgets.QPushButton('Добавить')
        self.hbox.addItem(hSpace)
        self.hbox.addWidget(self.addBtn)
        self.addItemForm.addRow('1', self.itemType)
        self.addItemForm.addRow('2', self.model)
        self.addItemForm.addRow('3', self.location)
        self.addItemForm.addRow('4', self.diapason)
        self.addItemForm.addRow('5', self.inter)
        self.addItemForm.addRow('6', self.lastCheck)
        self.addItemForm.addRow(self.hbox)
        self.addItemForm.addItem(vSpace)
Поиск всех виджеты, осуществляемый с помощью функции findСhildren, возвращает пустой список. Стока кода поиска выглядит следующим образом:
 allWidgetsForm = self.addItemForm.findChildren(QtWidgets.QWidget)
Как получить список виджетов в данной форме?
PEHDOM
Чтобы оно чтото вернуло, виджет должен иметь “детей”. Когда вы делаете .addRow вы добавляете виджет в компоновщик, но это не делает его автоматически родительским обьектом. Родителем являеться виджет для которого QFormLayout является компоновщиком. Поэтому ему и возвращать нечего.
Можно узнать к-во виджетов в компоновщике self.addItemForm.count() и пройтись по всем элемнтам в цикле self.addItemForm.itemAt(index)
Или явно задавать родителя тогда findChildren чтот вернет. Правда я не помню при добавлении виджета в компоновщик оно меняет родителя или нет, если до этого родитель был явно указан.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB