我想仅针对特定标签进行更改。我该怎么办?
我试过了两个:
QTabBar::tab#tbGeneral{... }
QTabWidget::tab-bar#tbGeneral{... }
没有工作。
答案 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)
。