代码之家  ›  专栏  ›  技术社区  ›  Fred

在QTreeView中显示具有前景色的QStandardItem,即使选中它

qt
  •  1
  • Fred  · 技术社区  · 14 年前

    我有一个QTreeView小部件,它使用QStandardItemModel作为模型,有4列和数百行。列表中的大多数项目都将以标准颜色显示,但少数项目需要使用不同的颜色。我可以用QStandardItem::setForeground()轻松更改这几个项目的颜色。

    但是,这只会影响项目的颜色 挑选出来的。当我选择一个有颜色的项目时,它的背景颜色变为蓝色(这是可以的),文本颜色变为白色(这是不可以的)。我尝试使用样式表来影响所选项目的前景色(使用选择器QTreeView::项目:已选定),但它会影响 全部的 项目。

    我想要一些我打过电话的东西 item->setForeground(Qt::red) 即使选中也保持红色,其他项使用默认颜色集(它们已经这样做了)。怎么能做到呢?

    1 回复  |  直到 14 年前
        1
  •  3
  •   Caleb Huitt - cjhuitt    14 年前

    所用的颜色(我想)是 QPalette Hightlight HighlightedText

    但是,由于在模型/视图框架中使用了标准项,因此您还有另一个选择。您应该能够创建一个代理来绘制视图。我建议从样式化委托继承,并尽可能多地调用父类的功能。很可能,您只需要在选中某个项目并且该项目具有非标准前景色的情况下更改一些参数。