默认情况下,PyQt中的内置视图可以在更新模型时自动刷新。我编写了自己的图表视图,但我不知道该怎么做,我必须多次手动更新它。
我应该使用哪种信号?
答案 0 :(得分:0)
您需要将视图连接到模型的dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight )
信号:
只要现有项目中的数据发生变化,就会发出此信号。
如果项目属于同一个父项,那么受影响的项目就是那些项目 在topLeft和bottomRight之间。如果物品没有 同一个父母,行为未定义。
重新实现setData()函数时,此信号必须为 明确地发出。
答案 1 :(得分:0)
如果您没有模型中的index()对象,则可以从模型或模型外部调用数据更改信号,如果从模型调用,请执行下一步:
self.dataChanged.emit(index, index)
某些模型函数可以获取索引,例如:
def setData(self, **index**, value)
所以,你可以拨打信号:
def setData(self, index, value):
#do something
self.dataChanged.emit(index, index)
信号上的索引指示哪个元素更改了其数据 如果您想从模型外部更改,刷新或重新加载数据并且您没有索引,则无需指示哪个元素将被更改,因此,您可以应用下一行< / p>
self.yourmodel.dataChanged.emit(QtCore.QModelIndex(), QtCore.QModelIndex())
这将刷新所有已更改的数据。