Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 通过样式表将文本颜色仅应用于QTabWidget中的一个特定选项卡_C++_Qt - Fatal编程技术网

C++ 通过样式表将文本颜色仅应用于QTabWidget中的一个特定选项卡

C++ 通过样式表将文本颜色仅应用于QTabWidget中的一个特定选项卡,c++,qt,C++,Qt,我试图在QTabWidget的选项卡栏中设置特定选项卡的文本颜色。 此特定选项卡可能出现在任何索引中(不一定是第一个、最后一个或中间、选中或未选中)。例如:包含30个选项卡的QTabWidget中第17个选项卡的文本颜色需要为绿色。 如何使用样式表(而不是setTabTextColor API)实现同样的效果? 在样式表中,我们可以设置所有选项卡的文本颜色,也可以设置第一个、最后一个或中间选项卡的文本颜色。但是如何通过样式表设置随机选项卡的文本颜色是一个问题。我建议为目标QTabWidget指定

我试图在QTabWidget的选项卡栏中设置特定选项卡的文本颜色。 此特定选项卡可能出现在任何索引中(不一定是第一个、最后一个或中间、选中或未选中)。例如:包含30个选项卡的QTabWidget中第17个选项卡的文本颜色需要为绿色。 如何使用样式表(而不是setTabTextColor API)实现同样的效果?
在样式表中,我们可以设置所有选项卡的文本颜色,也可以设置第一个、最后一个或中间选项卡的文本颜色。但是如何通过样式表设置随机选项卡的文本颜色是一个问题。

我建议为目标QTabWidget指定一个对象名,并使用ID选择器专门针对它。如需参考,请参阅不同SeelTor类型的文档,网址为


您可以使用以下属性设置对象名:

我建议为目标QTabWidget指定一个对象名,并使用ID选择器专门针对它。如需参考,请参阅不同SeelTor类型的文档,网址为

可以使用以下属性设置对象名称:

  • 来自
    QTabWidget
    的子类(仅用于覆盖其
    QTabBar
  • qtabar
    中创建子类并重写
    paintEvent()
  • QTabWidget
    子类中,在构造函数中设置新的选项卡栏:
  • 然后,这里是
    qtabar
    子类的一些示例代码:
  • .h文件-使选项卡文本透明:

    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
    子类的一些示例代码:
  • .h文件-使选项卡文本透明:

    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.cpp
    QApplication 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.cpp
    QApplication a(argc,argv)中;a、 固定样式(“融合”)它不太有效,我看到未选中选项卡的黑色阴影:。
    setStyleSheet
    似乎什么都不做。它起作用了。您确定正在使用rgba吗?也许您在创建tabbar后设置了新的应用程序样式表?您的解决方案高度依赖于样式,我要求您指出执行
    qDebug()metaObject().className()时得到的结果@eyllanesc你想说什么?答案是什么?可以有效吗?作品作者无法更改根应用程序样式,因此如果您可以告诉其他解决方案,请告诉我,我对此非常感兴趣。它不太有效,我看到未选中选项卡的黑色阴影:。
    setStyleSheet
    似乎什么都不做。它起作用了。您确定正在使用rgba吗?也许您在创建tabbar后设置了新的应用程序样式表?您的解决方案高度依赖于样式,我要求您指出执行
    qDebug()metaObject().className()时得到的结果@eyllanesc你想说什么?答案是什么?可以有效吗?作品作者不能改变根应用程序的风格,所以如果你能告诉另一个解决方案-请,我对它很感兴趣。