0

QTreeViewビューにフォーカスがあるかどうかに関係なく、選択したアイテムが同じ色になるようにスタイルシートを設定しようとしています。を使ってやっています

QTreeView::item:selected:!active { 
    background: myColour; 
}

QTreeView::item:selected:activeハードコードされた値をスタイル シートに渡す代わりに、 の値を使用して、常に色を正しく設定できるようにしたいと考えています。私はこれですぐに行きました

QTreeView::item:selected:!active { 
    background: QTreeView::item:selected:active; 
}

何が起こったのかを見るだけで、何もありませんでした。の値を抽出QTreeView::item:selected:activeしてスタイル シートで使用するにはどうすればよいですか?

4

1 に答える 1

0

パレットからアクティブなカラー グループの背景色を読み取り、それをウィジェットのパレットに適用します。

QWidget::palette()

QPalette

QPalette::color()

QPalette::ColorRole

QPalette::ColorGroup

したがって、これは、スタイルシートを に適用/洗練した後のコードのようになりますQTreeViewItem

QPalette modifiedPalette(this->palette());
QColor activeBgColor(this->palette().color(QPalette::Active, QPalette::Window));
modifiedPalette.setColor(QPalette::Window, activeBgColor);

this->setPalette(modifiedPalette);

それが役立つことを願っています。


他にも検討できるオプションが 2 つあります。

動的プロパティを使用するか、基本的に制御するプロパティをスタイリングに結び付けます。私は最近誰かにそれを説明する長い投稿をしました:

QList: メモリ不足

または、何らかの正規表現を使用してQString返された から情報を解析し、どこかに保存することもできますが、そのウィジェットのスタイルシートにそれがなく、親のスタイルシートを参照している場合、これは問題になる可能性があります。stylesheet()QWidget の style プロパティの使用も検討してください。

QWidget::styleSheet()

于 2012-12-13T19:16:15.483 に答える