我有QDockWidget
:
我想通过设置标题栏的背景颜色来提醒用户注意某些事件。
我通过设置DockWidget
的样式表来实现这一目的:
void DockWidget::setCriticalAlert()
{
setStyleSheet("QDockWidget { background-color:red; }");
}
结果如下:
问题是background-color
在QDockWidget
停靠时无法应用{/ p}}:
如何在QDockWidget
停靠时获取背景颜色?
答案 0 :(得分:1)
这是Qt中的一个错误。
引用相关问题:
问题是在QDockWidget :: paintEvent中有一个 绘制PE_FrameDockWidget之前的isFloating()条件。我们不可以 jsut删除这个条件,因为它会打破其他风格(那 当dockwidget停靠时不会画框架)我们做不到 要么使用PE_Widget来绘制帧,那么它就会越过 dockwidget的标题解决方案可能是介绍一个新的 PE_FrameDockWidgetDocked原始元素。或者一些 SH_DockWidget_DrawDockedFrame样式提示在每个中绘制帧 例。
答案 1 :(得分:0)
有效的解决方法似乎是设置父级的样式表,并使用class-and-id选择器。原谅python格式的代码,但概念是相同的 - 在这种情况下,'dock'是一个QDockWidget,它使用setObjectName()给出了一个对象名,其父级QMainWindow是'self':
self.setStyleSheet("QDockWidget#"+str(dock.objectName())+"::title {background-color:red}")
在PyQt5.5中,这在运行时工作,即可以即时更改。