单个QTreeWidget:
tree=QtGui.QTreeWidget()
单个QTreeWidgetItem:
item=QtGui.QTreeWidgetItem()
将项目添加到树:
tree.addTopLevelItem(item)
逐个向项目添加4个不同的小部件:
tree.setItemWidget(item, 1, QtGui.QLineEdit() )
tree.setItemWidget(item, 2, QtGui.QComboBox() )
tree.setItemWidget(item, 3, QtGui.QDateEdit() )
tree.setItemWidget(item, 4, QtGui.QCheckBox() )
现在在一个单循环中,我需要将所有4个子项小部件连接到同一个函数。非工作示例:
for i in range(1,5):
tree.itemWidget(item, i).activated.connect(myFunction)
上述示例的问题:并非所有4个小部件都具有相同的.activated
信号。你知道吗
例如,QLineEdit()
有自己的.textChanged
,QDateEdit()
有.dateChanged
,QCheckBox()
有.stateChanged
。你知道吗
我正在寻找的是一个单一信号的解决方案,可以与所有子部件(特别是在一个得到点击(第一次或只是任何点击)触发感兴趣的使用)。你知道吗
不能。但是可以转发信号,这样就可以从
QLineEdit
派生并创建一个自定义信号“activated”,该信号连接到QLineEdit
init中的textChanged
信号。这就是我所说的“适配器”信号,您需要派生每个类。但这是额外的工作,只有当它节省你在其他方面的工作才是值得的。否则,基于小部件类型的if/else序列就更简单了,但是使用isclass
有点不受欢迎。因此,如果额外的工作不值得努力,并且不想使用基于类型的if/else连接到适当的信号,那么您唯一的选择就是在调用tree.setItemWidget(item, index, widget)
之后连接到适当的信号。你知道吗相关问题 更多 >
编程相关推荐