如何找到使用循环创建的 QButton?

Posted

技术标签:

【中文标题】如何找到使用循环创建的 QButton?【英文标题】:How to find QButton created with a loop? 【发布时间】:2016-10-03 10:13:42 【问题描述】:

在 Maya 中创建一个按钮:

   cmds.button('buttonname', label='click me')

其中 buttonname 是 按钮对象。在稍后阶段,我可以简单地通过调用来编辑按钮:

   cmds.button('buttonname', e=1, label='click me again')

现在的问题: 我使用循环在 qt 中创建了一堆按钮:

  for s in Collection:
        file = os.path.splitext(s)[0]

        # Main widget
        widgetItem = QtWidgets.QWidget()
        layoutItem = QtWidgets.QVBoxLayout()
        widgetItem.setLayout(layoutItem)

        # Button
        button = QtGui.QPushButton()
        button.setObjectName(file)
        layoutItem.addWidget(button)

如何使用按钮名称调用/编辑其中之一?

提前致谢

【问题讨论】:

【参考方案1】:

假设您已经可以访问它们的父窗口小部件,您可以通过findChild 方法找到它们。

在 C++ 语法中,它会是这样的:

QPushButton *button = parentWidget->findChild<QPushButton *>("button1");

其中button1 是该按钮的名称。

【讨论】:

感谢 Frogatto,但每个按钮都添加到它自己的小部件中?!请参阅第一篇文章中的代码... @Digidim 没问题。如果按钮名称是唯一的,您可以在它们的公共根窗口小部件上调用此方法。 基于该示例 (github.com/PySide/Examples/blob/master/examples/layouts/…) 我使用自定义流程布局。所以我首先在这个小部件内部查看“按钮小部件”,然后在“按钮小部件”内部查看按钮本身? buttonWidget = flowLayout.findChild(QtWidgets.QWidget(), buttonName) 没有给我:( 好的 - 现在开始工作了!正在寻找错误的小部件...再次感谢您的帮助!

以上是关于如何找到使用循环创建的 QButton?的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个循环(无尽的)RecyclerView?

如何在 django 模板中为循环创建唯一的 javascript 变量名?

如何使用 python 库在骨架图像中找到循环?

如何在while循环中找到最大值和最小值 - c

PyQt4 - QTableView - 如何循环 QTableView

如何使用多个表循环 SYS_REFCURSOR?