我有QTabWidget
,其中包含4个标签。我想单独设置每个标题的样式:我看到我可以使用样式表来实现这一点。但我的问题是,我不能只更改选项卡名称的一个选项卡的标题,而不更改选项卡的其余部分。
以一种简单的方式,想象一下我想要第一个标签红色,第二个蓝色,第三个绿色和第四个黄色。那么,如何在不改变其他选项的情况下更改每个选项卡的样式。
谢谢!
修改
我看到there我如何一次更改所有标签页的样式,但不是单独更改
答案 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小部件。