C++ 忽略高亮显示的文本调色板

C++ 忽略高亮显示的文本调色板,c++,qt,C++,Qt,在Qt4.8中,我有一个QTreeWidget,树中的每个节点都根据其值将其文本着色(例如,绿色文本表示成功节点,红色表示失败节点) 这很好,但我在尝试选择树中的项目时遇到了问题。选择项目时,Qt将所选文本的Qpalete::ColorRole设置为Qpalete::HighlightedText。默认情况下,这会导致文本颜色变为白色。在一个完美的世界中,我希望当前的选择完全不改变文本颜色 从文档中可以看出,qpalete::setColor(ColorRole角色,const QColor&c

在Qt4.8中,我有一个
QTreeWidget
,树中的每个节点都根据其值将其文本着色(例如,绿色文本表示成功节点,红色表示失败节点)

这很好,但我在尝试选择树中的项目时遇到了问题。选择项目时,Qt将所选文本的
Qpalete::ColorRole
设置为
Qpalete::HighlightedText
。默认情况下,这会导致文本颜色变为白色。在一个完美的世界中,我希望当前的选择完全不改变文本颜色

从文档中可以看出,
qpalete::setColor(ColorRole角色,const QColor&color)
提供了更改突出显示文本颜色的方法,但它只能将
ColorRole
设置为使用固定颜色

有没有办法完全忽略与给定的
qpalete::ColorRole
关联的文本颜色?理想情况下,我希望突出显示的文本颜色角色不使用文本颜色
QPalette::HighlightedText
根本没有与之关联的文本颜色,当文本高亮显示时,它只保留其未高亮显示的颜色


在Qt中有什么方法可以轻松实现这一点吗?我想避免像继承
qpalete
QBrush
这样的东西,并通过破解重载函数来实现这一点,但我在文档中找不到任何有帮助的东西。

如果我没有弄错的话,您如何更改默认未选择的文本颜色(
Qt::WindowText
)每个节点的名称?如果您有一个代码如下的方法:

palette.setColor(Qt::WindowText, color);
treeItem->setPalette(palette);
对于这两个颜色角色,您始终可以调用
setColor()

palette.setColor(Qt::WindowText, color);
palette.setColor(Qt::HighlightedText, color);
treeItem->setPalette(palette);
希望这有帮助