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

ウィジェットがレイアウトに追加されると、ウィジェットは自動的にウィジェットが設定されているレイアウトの子になります。したがって、この例は 2 行に縮小されます。

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

ただし、findChildren再帰的であるため、すべての行編集がグループ ボックスにある場合、これは 1 行に簡略化できます。

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()

GroupBox にアクセスするには、item.widget() を使用する必要がありました。これがsome1に役立つことを願っています。

于 2016-09-12T14:45:09.687 に答える