ツリーのような構造のモデル/ビューを実装していて、特定のクラス(ここでは「appSpecificClass」と呼びます)をラップするQStandardItemModelを試すことにしました。
基本的に、そのクラスの一部(名前や一部のデータなど)をモデルに表示し、モデルを変更すると(編集ロール、またはドラッグアンドドロップで)、appSpecificClassに影響を与えるようにします。 (つまり、モデルに表示されている名前を変更すると、appSpecificClassのモデルのアイテムに関連付けられているオブジェクトの名前も変更されます)。
そこで、appSpecificClassへのポインターのみを持つappSpecificItemによってQStandardItemをサブクラス化することから始めました。appSpecificItemを作成すると、テキストとアイコンがappSpecificClassから呼び出され、すべてが正常に機能します。
ただし、appSpecificItemからデータを変更する場合、当然、appSpecificClassは変更されません。これまでのところ、仮想関数(またはその他)のオーバーロードを介してappSpecificItemのポインターと対話する方法が見つからなかったためです。
誰かがこれを行う方法を知っていますか/これが可能であれば?たとえば信号の場合、どうすればよいですか
QStandardItemModel::itemChanged ( QStandardItem * item )
が発行されたら、appSpecificItemのポインタを変更できます。
そうでない場合は、モデルを最初から実装するための優れたチュートリアルはありますか?自分で試してみましたが、簡単なことではありません。理想的には、QStandardItemModelのようなモデルが必要ですが、もう少し抽象化されています(appSpecificClassをモデルに配置できるように)。