我有一个继承QStandardItem的类,我将这些元素放在QTreeWidget中。该课程从外部接收通知,我想根据发生的事情更改项目的背景颜色。
如果我不使用样式表,它就可以正常工作,如下所示:
void myClass::onExternalEvent()
{
setBackground(0, QColor(255,0,0)));
}
但是,只要我在QTreeWidget上放置样式表,就没有效果:样式表似乎覆盖了setBackground()
调用。
所以我试过了:
void myClass::onExternalEvent()
{
this->setStyleSheet("background-color: red");
}
但这可能都错了,它改变了我屏幕上其他元素的颜色,不知道为什么。
有没有人知道如何改变背景颜色,就像使用setBackgroundColor一样,但仍能在我的QTreeWidget上使用样式表?
答案 0 :(得分:0)
选项板传播到窗口小部件的子窗口,混合和匹配样式表控件和本机控件很糟糕(我没有引用后者的方法,但我已在QT文档中读到它某处)。
话虽如此,请尝试在setAutoFillBackground(false)
派生类上设置QStandardItem
。
编辑:抱歉 - 您是否在样式表中指定QTreeWidget
或仅设置“background-color:”?如果您仅在样式表中指定QTreeWidget
也可以处理它。
QTreeWidget { background-color: white; }
但我认为你仍然需要设置autoFillBackground(false)
。