当前位置: 首页 > 面试题库 >

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

任云瀚
2023-03-14
问题内容

我正在使用pyside(qt)开发一个桌面应用程序,我想访问(迭代)QWidget的所有行编辑组件。在qt中,我找到了两个方法 findChild
findChildren, 但是没有找到合适的示例,并且我的代码显示错误, “ form”对象没有属性“ findChild”。
这里的“表单”是Qwidget表单,由lineEdit,组合框,Qpushbuttons等组件组成。

码:

lineEdits = form.findChild<QLineEdit>() //This is not working

lineEdits = form.findChild('QLineEdit) //This also not working

问题答案:

在PySide / PyQt4中,findChild和的签名findChildren不同,因为在Python中没有真正等同于C
++强制转换语法的东西。

相反,您必须传递一个(或tuple多个)类型作为第一个参数,并传递一个可选的字符串作为第二个参数(用于匹配objectName)。

因此,您的示例应如下所示:

lineEdits = form.findChildren(QtGui.QLineEdit)

请注意,findChildfindChildren是-的方法,QObject因此,如果您的表单不包含它们,则它不能是-
QWidget(因为所有小部件都继承QObject)。



 类似资料:
  • 问题内容: 我正在尝试遵循有关打印QWidet的文档,但出现错误。当我运行以下代码时,我得到了。 如果我将print_me()方法更改为以下方法,它将起作用(当然,我只是失去了缩放画家的全部能力): 问题答案: 用于优化的QPainter不能同时应用所有任务,但会保留指令并在最后应用它们,但要强制执行该任务,最好调用end()方法或将其删除,因为销毁者还调用end() ,此外,QPainter不必

  • 问题内容: 我正在尝试编写一个简单的Python脚本,它将所有子目录中的index.tpl复制到index.html(有一些例外)。 通过尝试获取子目录列表,我陷入了困境。 问题答案: 我对各种功能进行了 速度测试 ,以将 完整路径 返回到所有当前子目录。 tl; dr: 始终使用: 奖励:使用,您也可以只使用而不是来获取文件夹名称。 该函数(以及下面的所有其他函数)将不会使用 自然排序 。这意味

  • 我正在尝试构建一个函数,该函数将应用于一个数组,并将提取其所有非数组的值。 对于那些是数组的数组,它将再次执行相同的过程,直到来自第一个数组、其子数组、子数组自己的子数组等的所有值都将被放入单个数组。 我面临的问题在于,我事先不知道每个阵列将有多少子阵列,以此类推。 我尝试过的: 我尝试过使用,如下所示,但正如我上面所说的,子数组的数量和值通常是未知的。我相信某种循环甚至递归都会有所帮助,但我无法

  • 我试图将一个参数从父组件传递给子组件的ComponentDidMount()方法。我只能在子组件的render()中接收道具,而无法将其传递给ComponentDidMount()方法。 父组件-提供程序。js 子组件-AddCarePlan。js

  • 我现在有一个firestore,看起来像这样: 我使用的是,我试图获取“报告”集合中的所有文档。 我可以得到一个报告: 但我无法得到整个子集合 这可能吗?我是新手,所以这可能是一个愚蠢的问题。 谢谢 编辑控制台中收到的错误消息是: 我不确定权限,我没有访问权限,但如果是权限问题,我很困惑,我可以从集合中获取一个文档,但找不到获取所有文档的方法

  • 这是qt-pyside-savegeometry()saveState()的后续问题 null 这种方法适用于所有停靠窗口的停靠位置。它也可以很好地工作在浮动位置的未对接的窗口,只要窗口是未对接的出口。 当用户在会话内根据他们的需要裁剪浮动窗口的位置时,停靠和重新浮动窗口使其成功地恢复用户的首选位置。 然而,当用户裁剪了窗口的大小和位置,然后停靠窗口,然后退出时,问题就出现了。重新启动时,窗口不会