C++ 通过样式表将文本颜色仅应用于QTabWidget中的一个特定选项卡
我试图在QTabWidget的选项卡栏中设置特定选项卡的文本颜色。 此特定选项卡可能出现在任何索引中(不一定是第一个、最后一个或中间、选中或未选中)。例如:包含30个选项卡的QTabWidget中第17个选项卡的文本颜色需要为绿色。 如何使用样式表(而不是setTabTextColor API)实现同样的效果?C++ 通过样式表将文本颜色仅应用于QTabWidget中的一个特定选项卡,c++,qt,C++,Qt,我试图在QTabWidget的选项卡栏中设置特定选项卡的文本颜色。 此特定选项卡可能出现在任何索引中(不一定是第一个、最后一个或中间、选中或未选中)。例如:包含30个选项卡的QTabWidget中第17个选项卡的文本颜色需要为绿色。 如何使用样式表(而不是setTabTextColor API)实现同样的效果? 在样式表中,我们可以设置所有选项卡的文本颜色,也可以设置第一个、最后一个或中间选项卡的文本颜色。但是如何通过样式表设置随机选项卡的文本颜色是一个问题。我建议为目标QTabWidget指定
在样式表中,我们可以设置所有选项卡的文本颜色,也可以设置第一个、最后一个或中间选项卡的文本颜色。但是如何通过样式表设置随机选项卡的文本颜色是一个问题。我建议为目标QTabWidget指定一个对象名,并使用ID选择器专门针对它。如需参考,请参阅不同SeelTor类型的文档,网址为
您可以使用以下属性设置对象名:我建议为目标QTabWidget指定一个对象名,并使用ID选择器专门针对它。如需参考,请参阅不同SeelTor类型的文档,网址为 可以使用以下属性设置对象名称:
QTabWidget
的子类(仅用于覆盖其QTabBar
)李>
qtabar
中创建子类并重写paintEvent()
QTabWidget
子类中,在构造函数中设置新的选项卡栏:qtabar
子类的一些示例代码:explicit MyTabBar(QWidget *parent = nullptr) : QTabBar(parent)
{
setStyleSheet("MyTabBar::tab { color: rgba(0,0,0,0) }");
}
.cpp文件-画师魔术:
void MyTabBar::paintEvent(QPaintEvent *event)
{
QTabBar::paintEvent(event);
QPainter painter(this);
for(auto i = 0; i < count(); i++)
{
painter.setPen(QColor(YOUR, RANDOM, VALUES));
painter.drawText(tabRect(i), Qt::AlignHCenter | Qt::AlignVCenter, tabText(i));
}
}
void MyTabBar::paintEvent(QPaintEvent*event)
{
QTabBar::paintEvent(事件);
油漆工(本);
对于(自动i=0;i
QTabWidget
的子类(仅用于覆盖其QTabBar
)李>
qtabar
中创建子类并重写paintEvent()
QTabWidget
子类中,在构造函数中设置新的选项卡栏:qtabar
子类的一些示例代码:explicit MyTabBar(QWidget *parent = nullptr) : QTabBar(parent)
{
setStyleSheet("MyTabBar::tab { color: rgba(0,0,0,0) }");
}
.cpp文件-画师魔术:
void MyTabBar::paintEvent(QPaintEvent *event)
{
QTabBar::paintEvent(event);
QPainter painter(this);
for(auto i = 0; i < count(); i++)
{
painter.setPen(QColor(YOUR, RANDOM, VALUES));
painter.drawText(tabRect(i), Qt::AlignHCenter | Qt::AlignVCenter, tabText(i));
}
}
void MyTabBar::paintEvent(QPaintEvent*event)
{
QTabBar::paintEvent(事件);
油漆工(本);
对于(自动i=0;i
使用QSS,您无法为特定索引设置颜色,只能为引用设置颜色:当前、第一、最后等。为什么不使用setTabTextColor?因为这是正确的解决方案。这是因为setTabTextColor()没有将文本颜色强加给我想要的选项卡,因为父应用程序(不在我的控制之下)已经应用了一个样式表,其中已经应用了QTabBar::tab{color:white;}。我想覆盖这个。setTabTextColor()不会覆盖上述应用的样式。唯一的方法是使用tabBar()->setStyleSheet(“QTabBar::tab::?{color:green;}”);因此问题就来了。试试:a.setStyle(“fusion”)
你的意思是:tabWidget->tabBar()->setStyleSheet(“fusion”);tabWidget->tabBar()->setTabTextColor(索引,textColor)??否,在main.cppQApplication a(argc,argv)中;a、 固定样式(“融合”)代码>使用QSS,您无法为特定索引设置颜色,只能为引用设置颜色:当前、第一、最后等。为什么不使用setTabTextColor?因为这是正确的解决方案。这是因为setTabTextColor()没有将文本颜色强加给我想要的选项卡,因为父应用程序(不在我的控制之下)已经应用了一个样式表,其中已经应用了QTabBar::tab{color:white;}。我想覆盖这个。setTabTextColor()不会覆盖上述应用的样式。唯一的方法是使用tabBar()->setStyleSheet(“QTabBar::tab::?{color:green;}”);因此问题就来了。试试:a.setStyle(“fusion”)
你的意思是:tabWidget->tabBar()->setStyleSheet(“fusion”);tabWidget->tabBar()->setTabTextColor(索引,textColor)??否,在main.cppQApplication a(argc,argv)中;a、 固定样式(“融合”)代码>它不太有效,我看到未选中选项卡的黑色阴影:。setStyleSheet
似乎什么都不做。它起作用了。您确定正在使用rgba吗?也许您在创建tabbar后设置了新的应用程序样式表?您的解决方案高度依赖于样式,我要求您指出执行qDebug()metaObject().className()时得到的结果代码>@eyllanesc你想说什么?答案是什么?可以有效吗?作品作者无法更改根应用程序样式,因此如果您可以告诉其他解决方案,请告诉我,我对此非常感兴趣。它不太有效,我看到未选中选项卡的黑色阴影:。setStyleSheet
似乎什么都不做。它起作用了。您确定正在使用rgba吗?也许您在创建tabbar后设置了新的应用程序样式表?您的解决方案高度依赖于样式,我要求您指出执行qDebug()metaObject().className()时得到的结果代码>@eyllanesc你想说什么?答案是什么?可以有效吗?作品作者不能改变根应用程序的风格,所以如果你能告诉另一个解决方案-请,我对它很感兴趣。