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