我正在尝试在QTreeView
上设置样式表,使得所选项目具有相同的颜色,无论视图是否具有焦点。我正在使用
QTreeView::item:selected:!active {
background: myColour;
}
我不想将硬编码的值传递到我的样式表中,而是想使用QTreeView::item:selected:active
的值,这样我就可以始终正确设置颜色。
QTreeView::item:selected:!active {
background: QTreeView::item:selected:active;
}
只是看看发生了什么,这没什么。如何提取QTreeView::item:selected:active
的值并在样式表中使用它?
答案 0 :(得分:0)
我会从Palette中读取活动颜色组的背景颜色,并将其应用到widget的调色板中。
因此,在为QTreeViewItem
应用/打磨样式表之后,这就是代码的样子。
QPalette modifiedPalette(this->palette());
QColor activeBgColor(this->palette().color(QPalette::Active, QPalette::Window));
modifiedPalette.setColor(QPalette::Window, activeBgColor);
this->setPalette(modifiedPalette);
希望有所帮助。
您还可以探索的其他两个选项包括:
使用动态属性,或者基本上将您控制的某些属性绑定到样式。我最近发了一篇帖子向某人解释:
或者您可以使用某种正则表达式解析QString
返回的stylesheet()
中的信息,并将其存储在某处,但如果该窗口小部件的样式表不存在,则可能会出现问题拥有它,它引用了父级的样式表。您也可以考虑使用QWidget的style属性。