0

我有一个 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 内容背景区域的样式有任何其他想法?

4

1 回答 1

7

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

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

通过这样做设置样式表。

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

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

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

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

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

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

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

于 2018-08-01T17:42:09.573 回答