如何找到使用循环创建的 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?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 django 模板中为循环创建唯一的 javascript 变量名?