题
使用 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 等属性,但遗憾的是无法从样式表访问其中任何一个。
恐怕我认为如果不自己子类化和修改绘制事件,您想要做的事情是不可能的。
不隶属于 StackOverflow