4

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

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

谢谢!

编辑

我在那里看到了如何一次更改所有选项卡标题的样式,但不能单独更改

4

1 回答 1

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();
}

如果您需要更多控制,您可以制作自己的选项卡小部件。根据文档,QTabWidget 基本上只是一个 QStackedWidget 与 QTabBar 组合。您可以通过将 QStackedWidget 与例如一组程式化的 QPushButtons 组合来制作自己的选项卡小部件。

于 2012-05-24T17:13:33.107 回答