我试图重写QTreeView
来处理如果复选框被修改的话调整父项和子项。但是我不能发出信号,我也不确定这是否是因为我正在尝试子类QtGui
而不是{
以下是将触发错误的代码:
class QStandardItem(QtGui.QStandardItem):
someSignal = QtCore.Signal()
def __init__(self, *args, **kwargs):
QtGui.QStandardItem.__init__(self, *args, **kwargs)
self.someSignal.emit()
>>> QStandardItem()
# AttributeError: 'PySide2.QtCore.Signal' object has no attribute 'emit' #
以下是我目前的代码,仅供参考:
^{pr2}$
不是100%确定,但对于Python,为了定义自己的信号,必须使用:
此外,您可能还需要inherint
QtCore.QObject
以使用信号编辑:刚刚看到你在使用pyside,所以放弃了第一个解决方案,但是在QObject中插入是你的解决方案
正如您所指出的,只有继承自},因此会产生这个问题。适当的选择是使用QStandardItemModel,为此,我们重写
QObject
的类才能发出信号,QStandardItem
不是{setData()
方法并建立一个逻辑来验证状态是否已更改,然后使用itemFromIndex()
方法发出QStandardItem
,该方法返回一个给定的QModelIndex
。在示例:
相关问题 更多 >
编程相关推荐