【问题标题】:Qt: Background color on QStandardItem using StyleSheetQt:使用样式表的 QStandardItem 上的背景颜色
【发布时间】:2010-04-21 15:51:44
【问题描述】:

我有一个继承 QStandardItem 的类,并将元素放在 QTreeWidget 中。班级收到来自外部的通知,我想根据发生的情况更改项目的背景颜色。

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

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

但是,一旦我在 QTreeWidget 上放置了一个样式表,这没有任何效果:样式表似乎覆盖了 setBackground() 调用。

所以我尝试了:

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

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

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

【问题讨论】:

    标签: qt


    【解决方案1】:

    调色板传播到小部件的子级,混合和匹配样式表控件和本机控件是不好的(我没有方便引用后者,但我在 QT 文档中阅读过它某处)。

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

    编辑: 抱歉 - 另外,您是在样式表中指定 QTreeWidget 还是仅设置“背景颜色:”?如果您仅在样式表中指定QTreeWidget,它也可能会处理它。

    QTreeWidget { background-color: white; }
    

    但我认为您仍然必须设置autoFillBackground(false)

    【讨论】:

    • 感谢您的回复,我使用 setAutoFillBackground 没有得到任何不同的结果。文档说,如果有样式表,它将被关闭:doc.qt.nokia.com/4.6/qwidget.html#autoFillBackground-prop 问题是我不想更改完整 QTreeWidget 的背景,只更改小部件内的特定项目(一行)。我的课程是一个 QTreeWidgetItem,我只想改变这个项目的颜色。
    猜你喜欢
    • 2012-09-14
    • 2011-06-17
    • 2012-08-15
    • 1970-01-01
    • 2015-10-04
    • 2019-06-24
    • 2019-06-21
    • 1970-01-01
    • 2013-11-07
    相关资源
    最近更新 更多