【发布时间】:2010-11-03 07:26:07
【问题描述】:
我只想对特定标签进行更改。我该怎么做?
我都试过了:
QTabBar::tab#tbGeneral{... }
QTabWidget::tab-bar#tbGeneral{... }
都没有用。
【问题讨论】:
-
您绝对需要使用样式表还是可以在您的代码中使用?
标签: qt tabs stylesheet
我只想对特定标签进行更改。我该怎么做?
我都试过了:
QTabBar::tab#tbGeneral{... }
QTabWidget::tab-bar#tbGeneral{... }
都没有用。
【问题讨论】:
标签: qt tabs stylesheet
你可能看过Customizing QTabWidget and 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)。
【讨论】: