如果我想从python Qt中的布局中获取特定的小部件,我该怎么办?
到目前为止我做了什么:
for i in range(self.ui.horizontalLayout_14.count()):
#here it does fail
name = self.ui.horizontalLayout_14.itemAt(i).objectName()
#if the above would had worked, then I could do something like this for example
if "button" in name:
self.ui.horizontalLayout_14.itemAt(i).widget().close()
Run Code Online (Sandbox Code Playgroud)
请注意,对于示例,我正在使用button但它可能是布局,lineEdit或comboBox,标签等内部的任何小部件,但不是全部.
问题是itemAt()函数返回QLayoutItem而不是窗口小部件.所以你必须调用QLayoutItem::widget()函数来获取包含的小部件,即:
name = self.ui.horizontalLayout_14.itemAt(i).widget().objectName()
Run Code Online (Sandbox Code Playgroud)
UPDATE
但是,使用该QObject::findChild()功能可以更轻松地完成同样的操作.即:
widget = self.ui.findChild(QPushButton, "button")
# Check whether the returned widget is null...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4541 次 |
| 最近记录: |