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);

希望有帮助。


您还可以探索的其他两个选项包括:

使用动态属性,或者基本上将您控制的某些属性与样式绑定。我最近发了一篇较长的帖子向某人解释:

QList:内存不足

或者,您可以使用某种正则表达式解析QString返回的信息并将其存储在某处,但如果该小部件的样式表没有它,并且它正在引用父样式表,这可能会出现问题。stylesheet()你也可以考虑使用 QWidget 的 style 属性。

QWidget::styleSheet()

于 2012-12-13T19:16:15.483 回答