使用 Qt 样式表,是否可以为具有 4 个或更多选项卡的 QTabBar 中的每个选项卡设置不同的背景颜色?

我的 Qt 应用程序在菜单栏下方有 6 个选项卡。我想使用样式表将它们的背景颜色更改为 6 种不同的颜色。

有两个问题似乎阻碍了我:

  • 我只能使用纯样式表语法来设置“第一个”、“中间”和“最后一个”选项卡的样式(因此我说“4 个或更多”选项卡)。

  • 我不认为各个选项卡是我可以访问的 QTabBar 的子小部件。我的想法是,我可以将一个属性附加到我可以在样式表中引用的每个子选项卡。

例如:

// Stylesheet
QTabBar::tab[index="3"] {
   background: blue;
}

// Code
QTabBar* bar = new QTabBar;
int index = bar->addTab("Tab 1");
QWidget* tab1; //= ????
tab1->setProperty("index", index);

任何帮助将非常感激。谢谢。

有帮助吗?

解决方案

各个选项卡是结构体而不是对象。然后将这些结构用于绘画。请参阅 Qt源码 更多细节。

我对此进行了实验,但我找不到访问直接索引的方法,就像您指出的那样。作为参考,我尝试使用文本、工具提示、whatsThis 等属性,但遗憾的是无法从样式表访问其中任何一个。

恐怕我认为如果不自己子类化和修改绘制事件,您想要做的事情是不可能的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top