1

QTreeView のアイテムのスタイルを設定したい、つまり上部/下部のパディングを少し増やしたい。これは私のスニペットです:

QTreeView::item
{
    padding-top:    8px;
    padding-bottom: 8px;
    color: red;
}

残念ながら、これはパディングを子アイテムにのみ適用します。すべてのトップレベルのアイテムには、以前とまったく同じパディングがあります。「色:赤」を追加しました。テスト目的のためだけですが、一方、赤いテキストの色は、最上位または子に関係なく、すべての項目に適用されます。

私が見逃している特別な修飾子はありますか? :activeとで試してみまし:has-siblingたが、結果はどちらの場合も同じでした。

スクリーンショット

Qt 4.6.3 を使用しています。4.8でも試しましたが、結果は同じです。

4

2 に答える 2

2

問題は、ビューで使用していた QStyledItemDelegate サブクラスにありました。デリゲートは、項目の水平線を描画することのみを意図しており、sizehint 関数を再実装しませんでしたが、さらに調べたところ、サブクラスが間違った sizehint を返しているように見えました。

したがって、DanielCastro のアドバイスに従い、デリゲート サブクラスで仮想 sizehint 関数を使用しました。

于 2012-12-12T11:28:29.720 に答える
1

ここで言及したスタイルが機能するはずです。以下を使用して、添付style-sheetしたものと同じ出力が生成されるかどうかを確認し ます。UI のテストに使用します。Qt Designer

QTreeWidget{outline:0;}

QTreeWidget::item
{
    padding:5px;
    background-color: rgb(235, 235, 235);
    color: #1c1c1c;
    border-right: 10px solid rgb(255, 170, 0);
    font: 400 9.3pt "Segoe UI";
}

QTreeWidget::item:has-children
{
        border-right: 10px solid rgb(255, 0, 255);
}

このコードを次の場所に貼り付けることができます。

Settings->Preferences->Code->Print/Preview Configuration->Style Sheet

Qt Designerアプリ内でこのスタイルをテストする代わりに使用すると、外部から何も影響を受けていないことが確認されますstyle-sheet。これが期待どおりに機能する場合、問題は別の場所にあります。おそらく、目的のスタイルをオーバーライドする別のスタイルが存在する可能性があります。

于 2012-12-07T17:26:06.643 に答える