私は最近、アプリケーションの書き直しを開始しました。それをモデル/ビューに移植して、そこにあるクラッジの数を減らそうとしています。
これまでのところ、 から継承した読み取り専用モデルを成功裏に作成することができましたQAbstractTableModel
。このモデルは次のようなものです。
class MyModel(QtCore.QAbstractTableModel):
def __init__(self, data, parent=None):
super(MyModel, self).__init__(parent)
self.data = data
data
多数のオブジェクトを含むリストです。これらは data() メソッドでアクセスされます。
def data(self, index, role):
# much stuff omitted for clarity
return QtCore.QVariant(self.data[index.column()].id)
定義済みのdata
要素を使用する場合、これで問題ありません。しかし、実際にdata
はプログラムによって変更されます (特定のシグナルが受信されると拡張されます)。モデルにこれを認識させて、ビューもこれらの変更に反応できるようにするにはどうすればよいですか?
私は読み書きモデルについて読んできましたが、ユーザーが編集および変更することもできますが、私の見解では、編集できないようにしたいと考えています。つまり、モデルは「舞台裏で」変更する必要があります。のみ、ビューはそれに適応します。
この場合の最善のアプローチは何ですか? setData() などを使用して読み書きモデルを実装しますか、それとももっと簡単な解決策がありますか?