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

Sta*_*ton 0 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; }
Run Code Online (Sandbox Code Playgroud)

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

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

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

小智 7

大约晚了一年,但我最近遇到了同样的问题并让它工作了。

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

通过这样做设置样式表。

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

2)意识到这是一个 QWidget 而不是 QTabWidget 这就是为什么QTabWidget { background-color: black; }不起作用。

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

对我来说,我指定了我的样式表,为我拥有的每个选项卡对象名称重复:

#objectName {background-color: rgb(240,240,240);}
Run Code Online (Sandbox Code Playgroud)

这为我提供了我需要的确切行为。在我的例子中,我想在我的标签页上获得自然的灰色背景,但不覆盖标签页上的子组件。

我希望这对将来的某人有所帮助...