将QTabWidget的每个单独选项卡设置为彼此不同

时间:2012-05-24 16:22:23

标签: qt qtstylesheets

我有QTabWidget,其中包含4个标签。我想单独设置每个标题的样式:我看到我可以使用样式表来实现这一点。但我的问题是,我不能只更改选项卡名称的一个选项卡的标题,而不更改选项卡的其余部分。

以一种简单的方式,想象一下我想要第一个标签红色,第二个蓝色,第三个绿色和第四个黄色。那么,如何在不改变其他选项的情况下更改每个选项卡的样式。

谢谢!

修改

我看到there我如何一次更改所有标签页的样式,但不是单独更改

1 个答案:

答案 0 :(得分:5)

如果你是QTabWidget的子类,你可以访问受保护的函数QTabWidget::tabBar(),它返回它使用的QTabBar。 QTabBar有一个方法QTabBar::setTabTextColor(),它将更改单个选项卡的文本颜色。这是一个例子:

#include <QtGui>

class TabWidget : public QTabWidget
{
public:
    TabWidget()
    {
        addTab(new QPushButton("Hi 1!"), "Button 1 Tab");
        addTab(new QPushButton("Hi 2!"), "Button 2 Tab");
        tabBar()->setTabTextColor(0, QColor(Qt::red));
        tabBar()->setTabTextColor(1, QColor(Qt::blue));
    }
};

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    TabWidget tabWidget;

    tabWidget.show();
    return app.exec();
}

如果您需要更多控制权,可以创建自己的标签窗口小部件。根据{{​​3}},QTabWidget基本上只是一个与QTabBar结合的QStackedWidget。您可以通过将QStackedWidget与一组程式化的QPushButtons相结合来制作自己的Tab小部件。