在qt中自定义样式表中的选项卡控件

时间:2010-11-03 07:26:08

标签: qt tabs stylesheet

我想仅针对特定标签进行更改。我该怎么办?

我试过了两个:

QTabBar::tab#tbGeneral{... } 

QTabWidget::tab-bar#tbGeneral{... } 

没有工作。

1 个答案:

答案 0 :(得分:5)

您可能已查看过Customizing QTabWidget and QTabBar

要根据各个标签的状态设置样式(:仅限一个,:第一个,最后一个,中间,前一个选定,下一个选择,:已选择),您可以使用与此类似的样式表代码: / p>

QTabBar::tab {
    border: 1px solid #C4C4C3;
    border-bottom-color: #C2C7CB;
    border-top-left-radius: 4px;
    border-top-right-radius: 4px;
    padding: 1px 3px;
    margin-left: 1px;
    margin-bottom: 4px;
}

QTabBar::tab:selected {
    background-color: #f14040;
    border-bottom-style: none;
}

由于各个选项卡不是窗口小部件(或对象),因此它们没有可以将它们标识到样式表的对象名称或其他属性。您只能使用伪类来设置样式表的样式。

您可能必须使用(C ++)代码根据标签更改选项卡的样式。在Qt中自定义样式的推荐方法是通过类QStyle。您可以子类QStyle或使用QProxyStyle来更改特定小部件的外观。另一个替代方案(可能不是Qt推荐的)是通过继承QTabBar并重新实现函数QWidget::paintEvent( QPaintEvent *event)