默认情况下,PyQt 中的内置视图可以在其模型更新时自动刷新。我写了自己的图表视图,但是我不知道怎么做,我不得不手动更新很多次。
我应该使用哪个信号?
默认情况下,PyQt 中的内置视图可以在其模型更新时自动刷新。我写了自己的图表视图,但是我不知道怎么做,我不得不手动更新很多次。
我应该使用哪个信号?
您需要将视图连接到dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight )
模型的信号:
只要现有项目中的数据发生更改,就会发出此信号。
如果项目属于同一父项,则受影响的项目是 topLeft 和 bottomRight 之间的项目。如果项目没有相同的父项,则行为未定义。
重新实现 setData() 函数时,必须显式发出此信号。
如果您没有来自 model 的 index() 对象,您可以从模型或模型外部调用数据更改信号,如果您从模型调用,请执行下一步:
self.dataChanged.emit(index, index)
一些模型函数可以获取索引,例如:
def setData(self, **index**, value)
所以,你可以调用信号:
def setData(self, index, value):
#do something
self.dataChanged.emit(index, index)
信号上的索引指示哪个元素更改了数据下一行
self.yourmodel.dataChanged.emit(QtCore.QModelIndex(), QtCore.QModelIndex())
这将刷新所有已更改的数据。