如何在pyside/pyqt/qt中获取QWidget的所有子组件?

ani*_*ils 10 python qt children pyside

我正在使用pyside(qt)开发一个桌面应用程序,我想访问(迭代)QWidget的所有行编辑组件.在qt中我发现了两个方法findChildfindChildren,但没有找到正确的例子,我的代码显示错误,'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).