如何只设置QTabWidget背景颜色样式表

时间:2017-08-22 12:28:05

标签: c++ qt qtabwidget qstylesheet

我有一个Qt应用程序,在许多其他窗口小部件类型中,使用QTabWidget。我很难为这个对象设置背景颜色样式。

我已尝试过以下几行,我在其他论坛帖子中找到了我的样式表,但对该程序没有影响

QTabWidget { background-color: black; }
QTabWidget::pane { background-color: black; }
QTabWidget#tabWidget { background-color: black; }
QTabWidget#tabWidget::pane { background-color: black; }

如果我使用QWidget { background-color: black; },那么我的颜色已正确更改,但是我的程序中的所有其他小部件也都已更改...所以这不是我的意思寻找......

我也在使用ui->tabWidget->setStyleSheet("background-color: black");的代码中尝试过它但是这也是不受欢迎的,因为它会改变所有子窗口小部件的背景颜色。

有没有人对如何设置QTabWidgets内容背景区域的样式有任何其他想法?

1 个答案:

答案 0 :(得分:2)

大约一年后,但我最近遇到了同样的问题,并使其正常工作。

首先,QTabWidget为您创建的每个选项卡都有一个子QWidget。这是您将其他小部件放入的区域,这是您要设置其背景颜色的区域。

执行此操作以设置样式表。

1)从右上角的设计对象窗口中确定选项卡小部件的名称,它们应与您在创建选项卡时设置的currentTabName匹配。

2)意识到这是一个QWidget而不是QTabWidget,这就是QTabWidget { background-color: black; }不起作用的原因。

3)意识到,通过在样式表中使用“#”指定对象,子对象将不会继承样式表。

对我来说,我是这样指定样式表的,对我拥有的每个选项卡对象名称重复以下操作:

#objectName {background-color: rgb(240,240,240);}

这为我提供了所需的确切行为。就我而言,我想将自然的灰色背景带到“选项卡”页面上,但不覆盖选项卡页面上的子组件。

我希望这对以后的人有所帮助...