3

默认情况下,PyQt 中的内置视图可以在其模型更新时自动刷新。我写了自己的图表视图,但是我不知道怎么做,我不得不手动更新很多次。

我应该使用哪个信号?

4

2 回答 2

0

您需要将视图连接到dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight )模型的信号:

只要现有项目中的数据发生更改,就会发出此信号。

如果项目属于同一父项,则受影响的项目是 topLeft 和 bottomRight 之间的项目。如果项目没有相同的父项,则行为未定义。

重新实现 setData() 函数时,必须显式发出此信号。

于 2012-12-22T04:52:18.687 回答
0

如果您没有来自 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())

这将刷新所有已更改的数据。

于 2017-05-28T19:27:15.380 回答