問題タブ [qstyle]
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.
c++ - QStyledItemDelegate を使用した QTreeView アイテムの描画
Qt の例のリストに基づいてプロジェクトを作成し、Simple Tree Model Example
そのモデルを編集して、いくつかの項目もチェックできるようにしました。これは次のようになります。
一部の項目を少し左に移動してほしい。そこで、派生してデリゲートを作成し、次のようQStyledItemDelegate
に再実装しました。QStyledItemDelegate::paint
このように、タイプの項目は定数の値 (この場合は 10 ピクセル)TreeItem::Type::Checkable
だけ左に描画されます。desiredThreshold
ここまでは順調ですね; すべてがうまく機能し、描画が正しく行われます。でも...
問題は、項目がわずかに左に描画されているにもかかわらず (これで問題ありません)、項目がまったく移動していないかのようにマウス イベントがまだ機能していることです。仕組みは次のとおりです。
チェックボックス(アイテム全体と一緒に移動した)をクリックすると、モデルが正しく更新されるように、アイテム全体がわずかに左に描画されることをデリゲートに伝えることは可能ですか?
c++ - QStyleでヘッダーテキストの幅を知る方法は?
私はQTreeView
それを使用ProxyStyle
しています。
上の画像はヘッダーのみです。ここで、図のように、ヘッダー ラベルの横に上/下矢印 (アイテムを並べ替えるため) を描画する必要があります。矢印を正しい位置に配置するには、次のことを知る必要があります。
- 左余白 = テキストと左境界線の間の距離
- テキスト幅
- 右マージン = テキストと矢印の間の距離
この場合、テキスト幅を計算するにはどうすればよいですか? QFontMetrics について考えましたが、計算するテキストを受け取る方法がわかりません。
私のスタイルでは、drawPrimitive
関数のみを使用します
subElementRect( SE_HeaderLabel, p_option, p_widget ).width()
この場合に使用しますが、間違っています。テキストの幅を計算するにはどうすればよいですか?