デフォルトでは、PyQtの組み込みビューは、モデルが更新されたときにそれ自体を自動更新できます。独自のチャートビューを作成しましたが、その方法がわかりません。手動で何度も更新する必要があります。
どの信号を使用する必要がありますか?
デフォルトでは、PyQtの組み込みビューは、モデルが更新されたときにそれ自体を自動更新できます。独自のチャートビューを作成しましたが、その方法がわかりません。手動で何度も更新する必要があります。
どの信号を使用する必要がありますか?
dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight )
ビューをモデルの信号に接続する必要があります。
この信号は、既存のアイテムのデータが変更されるたびに発行されます。
アイテムが同じ親のものである場合、影響を受けるのはtopLeftとbottomRightの間のアイテムです。アイテムに同じ親がない場合、動作は定義されていません。
setData()関数を再実装する場合、このシグナルは明示的に発行する必要があります。
モデルからの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())
これにより、変更されたすべてのデータが更新されます。