在Qt中使用样式表自定义选项卡控件

4

我希望只对特定的标签页进行更改。如何实现?

我尝试了以下两种方式:

QTabBar::tab#tbGeneral{... } 

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

没有一个有效。


你是否一定需要使用样式表,还是可以在代码中完成? - Live
1个回答

5
你可能已经看过了自定义 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;
}

由于单独的选项卡不是小部件(或对象),它们没有对象名称或其他属性可将其识别为样式表。您只能使用伪类来使用样式表样式化选项卡。

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


你误解了我的意思。我不想改变窗格,我只是想…… - sara
区分两种情况:第一个选项卡是否被选中。也许我之前没有表达清楚。 - sara

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接