ani*_*ils 10 python qt children pyside
我正在使用pyside(qt)开发一个桌面应用程序,我想访问(迭代)QWidget的所有行编辑组件.在qt中我发现了两个方法findChild和findChildren,但没有找到正确的例子,我的代码显示错误,'form'对象没有属性'findChild'. 这里的'形式'是Qwidget表单,包括组件lineEdit,comboboxes,Qpushbuttons等.
码:
lineEdits = form.findChild<QLineEdit>() //This is not working
lineEdits = form.findChild('QLineEdit) //This also not working
Run Code Online (Sandbox Code Playgroud)
ekh*_*oro 23
PySide/PyQt4中的签名findChild
和签名findChildren
是不同的,因为在Python中没有与C++强制转换语法完全等效的东西.
相反,您必须传递一个类型(或tuple
类型)作为第一个参数,并将可选字符串作为第二个参数传递(用于匹配objectName
).
所以你的例子应该是这样的:
lineEdits = form.findChildren(QtGui.QLineEdit)
Run Code Online (Sandbox Code Playgroud)
请注意,findChild
并且findChildren
是方法QObject
- 因此,如果您的表单没有它们,则它不能是QWidget
(因为所有小部件都继承QObject
).