PyQt5:如何使用 setObjectName 为所有对象分配 ObjectName



如何为我的 gui 类中的所有 QWidgets、QLayouts、QFrames 等分配 ObjectNames? 像这样的代码只能在 PyQt4 中使用:

for w in gui.widgets():
w.setObjectName(str(w)

这在 PyQt5 中是如何工作的?另外,如何遍历所有对象而不是"仅"小部件?我知道这个问题有一些答案C++但我无法将它们翻译成 python。

主要的 QObject 或 QWidget 类没有widget()函数,所以你可能在自己的代码中实现,但在更新 PyQt5 时忘记更新它。

要访问所有子对象,只需使用findChildrenQObject作为第一个参数,这将返回 QObject 类的所有后代,包括 QWidgets、QActions、项模型等:

for child in self.findChildren(QObject):
pass

由于默认情况下findChildren以递归方式查找,因此还可以限制为当前对象的直接子对象:

for child in self.findChildren(QObject, options=FindDirectChildrenOnly):
pass

在这种情况下,结果将与self.children().

请注意,并非所有Qt中的类都继承自QObject。

相关内容

  • 没有找到相关文章

最新更新