問題タブ [qstyleditemdelegate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1203 参照

c++ - カスタム デリゲート クラスの「ペイント」関数をオーバーライドして QSpinBox を描画する方法

にカスタム委任者を追加しましたQTableView。アイテムをダブルクリックすると、「QSpinBox」であるエディター ウィジェットが表示され、値をうまく編集できます。このエディター ウィジェットは、フォーカスが失われると消えます。私が欲しいのはQSpinBox、いつもそこにいることです。ここでQtの例を見ると、クラスのpaint関数をオーバーライドしQAbstractItemDelegateて描画する必要があるQSpinBoxことがわかりますが、その方法がわかりません。一般的に、ペイント関数内で Qt ウィジェットを描画する方法を知りたいです。
参考までに、私は次のテストコードを持っています:

0 投票する
1 に答える
1361 参照

c++ - QStyledItemDelegate を使用した QTreeView アイテムの描画

Qt の例のリストに基づいてプロジェクトを作成し、Simple Tree Model Exampleそのモデルを編集して、いくつかの項目もチェックできるようにしました。これは次のようになります。

ここに画像の説明を入力

一部の項目を少し左に移動してほしい。そこで、派生してデリゲートを作成し、次のようQStyledItemDelegateに再実装しました。QStyledItemDelegate::paint

このように、タイプの項目は定数の値 (この場合は 10 ピクセル)TreeItem::Type::Checkableだけ左に描画されます。desiredThreshold

ここまでは順調ですね; すべてがうまく機能し、描画が正しく行われます。でも...

問題は、項目がわずかに左に描画されているにもかかわらず (これで問題ありません)、項目がまったく移動していないかのようにマウス イベントがまだ機能していることです。仕組みは次のとおりです。

ここに画像の説明を入力

チェックボックス(アイテム全体と一緒に移動した)をクリックすると、モデルが正しく更新されるように、アイテム全体がわずかに左に描画されることをデリゲートに伝えることは可能ですか?