[PySide] ListViewで値を変更したときに変更前と後の値を取得する

ListViewで値を変更したり、変更情報を取得したりする方法が分からなかったので調べてみました。

ListViewの仮想関数かなにかでやるのかなーとか考えてたのですが、そうではなくデリゲートを使えば良いんじゃね?と思い至って試してみました。

setModelData で、モデルに入力情報が登録されるところで入力前と後の情報を取得して、
Signalを作って、emit( before , after ) で値を送信。
あとは、それを受け取る関数を作って完了です。

1つ悩んだのが、選択じの背景色変更。
当初、前に試しに作ったデリゲートクラスを使い回してたため

こう書いてたのですが、コレだと選ばれたときに背景色が変わらず失敗になりました。
修正版では、painter.setBrush() を使用して、背景色を変更するようにしてみました。

View – Model – Delegateのコンボはとても便利なのですが
情報少なすぎて答えにたどり着くまでが大変です…日々精進。

追記。

サンプルに書いたスクリプトが古かったのでちょっと修正。

コメントを残す

メールアドレスが公開されることはありません。


*