QToolBar 背景颜色仅适用于操作

QToolBar background color only applies to actions

我正在尝试使用以下样式表 background : rgb(30, 30, 30) 在 Qt 设计器中设置 QToolBar 的背景色。出于某种原因,背景颜色仅应用于操作的背景,如图像中所示。如何更改整个工具栏的颜色?

编辑。

即使我改变我整个window的背景颜色,工具栏的区域也不受影响:

这是一个空的默认 Qt 小部件应用程序,我只在 QMainWindow 的样式表中添加了一个 QToolBar 和一个 QAction

background : red;
QToolBar { background : red }
QToolButton {background : red}

这是预期的行为还是 qt 上的错误 linux?

编辑。

我在 Xubuntu 14.04 上用 Qt 4.8 和 Qt 5.4.2 试过这段代码。这似乎是 Qt 上的一个错误。请参阅下面我自己的回答。

您可以使用 QT StyleSheet 如下:

ui->mainToolBar->setStyleSheet("QToolButton:!hover {background-color:lightgray} QToolBar {background: rgb(30, 30, 30)}");

我为工具栏按钮的背景设置的第一个颜色参数,第二个为设置工具栏背景的颜色。

如果您只想设置背景颜色,请使用 StyleSheet,如下所示:

 ui->mainToolBar->setStyleSheet("QToolBar {background: rgb(30, 30, 30)}");

请查看下图以供参考:

我希望你想要像上图那样的工具栏。

我正在使用 Ubuntu 而 user256.. 的代码不起作用。但是,我确实尝试过 Samurai Jack 的代码并且它有效。这是您的代码不起作用的地方:!hover 无效。要获取您想要的代码,请执行以下操作:

ui->mainToolBar->setStyleSheet("QToolButton:hover {background-color: darkgray; }"
                              " QToolBar {background: rgb(30, 30, 30) }");

其中 :hover 是一个 CSS 指令,我假设您正在尝试这样做。我正在 Ubuntu 15.04 上测试它并且它有效。

好的,所以我做了一些挖掘并找到了这个 https://forum.qt.io/topic/23800/solved-change-background-color-of-qtoolbar-doesn-t-work-in-linux 。显然,这是某些 Linux 发行版的特定问题。在 background : rgb(30, 30, 30) 之后添加 border: none 解决了问题。不知道为什么我的问题被否决了。

我知道它已经存在了,但是我遇到了 ToolBar 背景的问题,发现它可以用 QPalette 来改变。最主要的是 QPalette Color Role 必须设置为 QPlatte::Button。