gpt4 book ai didi

c++ - 忽略突出显示的文本调色板

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:50:49 25 4
gpt4 key购买 nike

在 Qt 4.8 中,我有一个 QTreeWidget,树中的每个节点都根据其值为其文本着色(例如,成功节点的绿色文本,失败节点的红色文本)。

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

从文档来看,QPalette::setColor(ColorRole role, const QColor & color) 提供了一种改变突出显示文本颜色的方法,但它只能设置ColorRole 使用固定颜色。

有没有办法完全忽略与给定 QPalette::ColorRole 关联的文本颜色?理想情况下,我希望突出显示的文本颜色角色单独保留文本颜色; QPalette::HighlightedText 根本没有与之关联的文本颜色,当文本被突出显示时,它只是保持其非突出显示的颜色。

在 Qt 中有什么方法可以很容易地做到这一点吗?我想避免从 QPaletteQBrush 继承并破解重载函数来执行此操作,但我在文档中找不到任何对我有帮助的东西出。

最佳答案

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

palette.setColor(Qt::WindowText, color);
treeItem->setPalette(palette);

您总是可以为两种颜色角色调用 setColor():

palette.setColor(Qt::WindowText, color);
palette.setColor(Qt::HighlightedText, color);
treeItem->setPalette(palette);

希望这对您有所帮助!

关于c++ - 忽略突出显示的文本调色板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29242035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com