Qt:使用StyleSheet在QStandardItem上的背景颜色

时间:2010-04-21 15:51:45

标签: qt

我有一个继承QStandardItem的类,我将这些元素放在QTreeWidget中。该课程从外部接收通知,我想根据发生的事情更改项目的背景颜色。

如果我不使用样式表,它就可以正常工作,如下所示:

void myClass::onExternalEvent()
{
    setBackground(0, QColor(255,0,0))); 
}

但是,只要我在QTreeWidget上放置样式表,就没有效果:样式表似乎覆盖了setBackground()调用。

所以我试过了:

void myClass::onExternalEvent()
{
    this->setStyleSheet("background-color: red"); 
}

但这可能都错了,它改变了我屏幕上其他元素的颜色,不知道为什么。

有没有人知道如何改变背景颜色,就像使用setBackgroundColor一样,但仍能在我的QTreeWidget上使用样式表?

1 个答案:

答案 0 :(得分:0)

选项板传播到窗口小部件的子窗口,混合和匹配样式表控件和本机控件很糟糕(我没有引用后者的方法,但我已在QT文档中读到它某处)。

话虽如此,请尝试在setAutoFillBackground(false)派生类上设置QStandardItem

编辑:抱歉 - 您是否在样式表中指定QTreeWidget或仅设置“background-color:”?如果您仅在样式表中指定QTreeWidget也可以处理它。

QTreeWidget { background-color: white; }

但我认为你仍然需要设置autoFillBackground(false)