QAbstractItemDelegate (独自の Item デリゲート クラス) で paint() 関数をオーバーロードしています。
ドラッグすると、セル全体の内容がペイントされますが、これは望ましくありません。ドラッグ中に特定の何かで paint() 関数が呼び出されると想定していますが、それが見つからないようです。
私が見つけることができた最も近いものは、所有するビュークラスの QState 変数です (アクセス関数 QTableView::state() は保護されています)関数を呼び出して、ドラッグしているかどうかを返します。デリゲート クラス内で、ドラッグしているかどうかを判断し、paint() 関数を変更できます。
これはほとんど機能します。
問題は、元のセルに変更されたペイント イメージが表示されることです。これは望ましくありません。元のセルのイメージをそのままにしておきたいのです。
例を精査して、これを行う何かがあるかどうかを確認する必要があると思います...
Qt ソースをクロールして、QItemDelegate::paint() 関数を呼び出してドラッグ ピックスマップを設定する場所を確認できますが、変更されるのは、項目オプション スタイルで QStyle::State_Selected を強制することだけです。アイテムはすでに選択されているので、それだけでは不十分です。
ドラッグ時にセルの内容を明示的に描画する方法を知る方法はありますか?