C++ QToolBar背景色仅适用于操作

C++ QToolBar背景色仅适用于操作,c++,qt,background-color,qtoolbar,C++,Qt,Background Color,Qtoolbar,我试图在Qt设计器中设置QToolBar的底色,在样式表背景中设置以下内容:rgb(30,30,30)。由于某些原因,背景颜色仅应用于动作的背景,如图像中所示。如何更改整个工具栏的颜色 编辑 即使我更改了整个窗口的背景色,工具栏区域也不会受到影响: 这是一个空的默认QtWidgets应用程序,我只在QMainWindow的样式表中添加了一个QToolBar和一个QAction background : red; QToolBar { background : red } QToolButto

我试图在Qt设计器中设置QToolBar的底色,在样式表
背景中设置以下内容:rgb(30,30,30)
。由于某些原因,背景颜色仅应用于动作的背景,如图像中所示。如何更改整个工具栏的颜色

编辑

即使我更改了整个窗口的背景色,工具栏区域也不会受到影响:

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

background : red;
QToolBar { background : red }
QToolButton {background : red}
这是预期的行为还是linux qt上的错误

编辑


我用Qt4.8和Qt5.4.2在Xubuntu 14.04上尝试了这段代码。这似乎是Qt上的一个bug。请参见下面我自己的答案。

您可以使用QT
样式表,如下所示:

ui->mainToolBar->setStyleSheet("QToolButton:!hover {background-color:lightgray} QToolBar {background: rgb(30, 30, 30)}");
我正在为工具栏按钮的背景设置的第一个颜色参数和设置工具栏背景颜色的第二个颜色参数

如果只想设置背景色,请使用
样式表
,如下所示:

 ui->mainToolBar->setStyleSheet("QToolBar {background: rgb(30, 30, 30)}");
请查看下图以供参考:


我希望您希望工具栏如上图所示。

我使用的是Ubuntu和user256..的代码不起作用。但是,我确实尝试过武士杰克的密码,它是有效的。这里是你的代码不起作用的地方:!悬停无效。要获取所需代码,请执行以下操作:

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


其中
:hover
是一个CSS指令,我假设您正在尝试这样做。我正在Ubuntu15.04上测试它,它可以工作。

好的,所以我做了一些挖掘,找到了这个。显然,这是某些Linux发行版上的一个特定问题。在
background:rgb(30,30,30)
之后添加
border:none
,修复了该问题。不知道为什么我的问题被否决了。

我知道它已经被否决了,但是我在工具栏背景中遇到了问题,并且发现它可以用Qpalete更改。最主要的是Qpalete颜色角色必须设置为QPlatte::Button

请给我们更多的代码上下文。好吧,除了样式表属性中添加的“backgound:rgb(30,30,30)”之外,实际上没有任何代码。我正在使用qt设计器。我在QMainWindow中添加了一个QToolBar,在工具栏中添加了一些QActions,在属性“样式表”中我添加了背景:rgb(30,30,30)。需要更多上下文:OS,Qt版本您可能发现了一个bug,因为这应该可以在您尝试时正常工作,你能提供的信息越多越好。添加的信息越多这仍然只适用于QAction下的区域。我创建了一个空项目,只有一个QMainWindow、一个QToolBar和一个QAction,但仍然不工作。那代码真的对你有用吗?是的,我查过了!!我会放截图,只是为了你的reference@user2563661:我更新了答案。你想这样,对吗?是的,没错。这很奇怪。我现在在我的项目中唯一的代码是
MainWindow::MainWindow(QWidget*parent):QMainWindow(parent),ui(newui::MainWindow){ui->setupUi(this);ui->maintoolboolbutton->setStyleSheet(“QToolButton:!hover{background color:darkgray}QToolBar{background:rgb(30,30)}”);}
你在什么操作系统上?我正在使用Xubuntu。@user2563661:我正在使用windows 7。我也检查了你粘贴的代码,我不想设置悬停效果。我只是想设置整个工具栏的背景色。在我的系统中,
QToolBar{background:rgb(30,30,30)}
似乎没有任何效果。然后删除
:hover
指令,您应该会得到想要的样式。:!悬停是武士杰克的建议。我的实际代码中没有它。我在问题中更新了一个空的默认项目的图片,我只尝试更改工具栏的颜色。没有效果。首先,它不是
:!悬停
。你复印粘贴了吗(用我的替换
ui->mainToolBar
位?它应该可以编译并运行良好,达到你想要的效果。如果你不想要悬停位,那很好;只需删除它。我没有:悬停在我的代码中,也没有:!悬停,正如你在我的问题中所看到的。这不是我想要的,是武士杰克建议的。我试过你的代码也一样,但在我的系统中不起作用。正如你从我更新的问题中看到的,除了工具栏,其他所有东西的背景都会发生变化。我甚至尝试了一些QPushButtons和其他小部件,它适用于除QToolBar之外的所有东西。我开始认为这是Xubuntu 14.04上的qt的一个错误,正如我看到的其他一些错误一样在使用qt软件之前,d gtk会发出警告。我已经在我的Linux机器上测试了代码,它可以正常工作;该线程已存在多年,因此现在必须修复。您需要将代码复制并粘贴到您的问题上,以便我们可以帮您,因为不清楚您卡在了哪一位。我给了您一个解决方案,但您似乎没有考虑到这一点帐户。我尝试了你的代码,但它没有像我告诉你的那样工作。我写的所有代码都在上面的问题中。我唯一的代码是:
background:red;
QToolBar{background:red}
QToolButton{background:red}这不起作用。在我添加了“代码>边框:没有<代码> > QooToBar之后,它开始工作。我不知道你是否对QT设计器感到困惑。我不需要写任何C++。有一个属性,叫做样式表,我在上面添加了代码,奇怪的是,我把我的代码改成了代码>背景:所有的CSS规则都是红色< /代码>,结果是正如所料。我不知道为什么它对您不起作用。这可能是XFCE的问题。