4

与我们在 PyQt 布局中循环小部件的问题类似,但有点复杂......

我有

QVGridLayout
   QGroupBox
      QGridLayout
         QLineEdit

我想访问 QLineEdit 但到目前为止我不知道如何访问 QGroupBox 的子项

        for i in range(self.GridLayout.count()):
            item = self.GridLayout.itemAt(i)
            for i in range(item.count()):
                lay = item.itemAt(i)
                edit = lay.findChildren(QLineEdit)
                print edit.text()

任何人都可以指出我正确的方向吗?

4

2 回答 2

7

将小部件添加到布局时,它会自动成为其所在布局的小部件的子级。因此,该示例简化为两行:

for group in self.GridLayout.parentWidget().findChildren(QGroupBox):
    for edit in group.findChildren(QLineEdit):
        # do stuff with edit

但是,findChildren递归的,所以如果所有的行编辑都在组框中,这可以简化为单行:

for edit in self.GridLayout.parentWidget().findChildren(QLineEdit):
    # do stuff with edit
于 2016-09-13T16:49:37.290 回答
1

排序:

for i in range(self.GridLayout.count()):
     item = self.GridLayout.itemAt(i)
     if type(item.widget()) == QGroupBox:
          child =  item.widget().children()

我必须使用 item.widget() 来访问 GroupBox。希望这对一些人有所帮助。

于 2016-09-12T14:45:09.687 回答