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

sar*_*ara 4 qt tabs stylesheet

我想仅针对特定选项卡进行更改.我该怎么做?

我试过两个:

QTabBar::tab#tbGeneral{... } 

QTabWidget::tab-bar#tbGeneral{... } 
Run Code Online (Sandbox Code Playgroud)

没有用.

but*_*uti 5

您可能已经研究过Customizing QTabWidget和QTabBar.

要根据各个选项卡的状态设置样式(:only-one,:first,:last,:middle,:previous-selected,:next-selected,:selected),您可以使用与此类似的样式表代码:

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;
}
Run Code Online (Sandbox Code Playgroud)

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

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