循环访问布局内部的小部件

6

这是一个与我们这里类似的问题:在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()

有人能指我方向吗?

涉及技术,具体内容需要更多信息才能提供帮助。
2个回答

11

当将小部件添加到布局中时,它会自动成为设置它的小部件的子级。因此,示例可以简化为两行:

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

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。 希望这能帮助一些人。

1
什么是GridLayout? - ghost21blade

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接