C++ QDockWidget::停靠时未应用背景色

C++ QDockWidget::停靠时未应用背景色,c++,qt,C++,Qt,我有一个QDockWidget: void DockWidget::setCriticalAlert() { setStyleSheet("QDockWidget { background-color:red; }"); } 我想通过设置标题栏的背景色来提醒用户某些事件 我通过为我的DockWidget设置样式表实现了这一点: void DockWidget::setCriticalAlert() { setStyleSheet("QDockWidget { backgrou

我有一个
QDockWidget

void DockWidget::setCriticalAlert()
{
    setStyleSheet("QDockWidget { background-color:red; }");
}

我想通过设置标题栏的背景色来提醒用户某些事件

我通过为我的
DockWidget
设置样式表实现了这一点:

void DockWidget::setCriticalAlert()
{
    setStyleSheet("QDockWidget { background-color:red; }");
}
结果是:

问题在于,当停靠
QDockWidget
时,
背景色无法应用:

QDockWidget
停靠时,如何获得要应用的背景色?

这是Qt中的一个错误

引述相关问题:

问题在于,在QDockWidget::paintEvent中,存在一个 绘制PE_FrameDockWidget之前的isFloating()条件。我们不能 jsut删除此条件,因为它会破坏其他样式(即 当dockwidget停靠时,不快速绘制框架)我们不能 或者使用PE_小部件绘制框架,然后它通过 dockwidget的标题解决方案可能是引入一种新的 PE_FrameDockWidgetDocked基本元素。或者一些 SH_DockWidget_DrawDockedFrame stylehint在每个 案例


一个有效的解决方法似乎是设置父级的样式表,并使用类和id选择器。请原谅python格式的代码,但概念是相同的-在本例中,“dock”是一个QDockWidget,它使用setObjectName()指定了一个对象名,其父窗口QMainWindow是“self”:

self.setStyleSheet("QDockWidget#"+str(dock.objectName())+"::title {background-color:red}")
在PyQt5.5中,这在运行时起作用,即可以动态更改