3

デフォルトでは、PyQtの組み込みビューは、モデルが更新されたときにそれ自体を自動更新できます。独自のチャートビューを作成しましたが、その方法がわかりません。手動で何度も更新する必要があります。

どの信号を使用する必要がありますか?

4

2 に答える 2

0

dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight )ビューをモデルの信号に接続する必要があります。

この信号は、既存のアイテムのデータが変更されるたびに発行されます。

アイテムが同じ親のものである場合、影響を受けるのはto​​pLeftとbottomRightの間のアイテムです。アイテムに同じ親がない場合、動作は定義されていません。

setData()関数を再実装する場合、このシグナルは明示的に発行する必要があります。

于 2012-12-22T04:52:18.687 に答える
0

モデルからの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 に答える