PyQt - 更新模型时自动刷新自定义视图?

时间:2012-12-22 04:07:26

标签: python qt user-interface qt4 pyqt

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

我应该使用哪种信号?

2 个答案:

答案 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())

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