使用 CSS 设计 QTabWidget 背景

Posted

技术标签:

【中文标题】使用 CSS 设计 QTabWidget 背景【英文标题】:Styling QTabWidget background with CSS 【发布时间】:2011-11-02 10:18:15 【问题描述】:

我希望为活动的 QTabWidget 选项卡设置自定义背景颜色。不幸的是,我无法找出所需的选择器。 在 Linux 上,以下 hack 有效:

QTabWidget::tab > QWidget > QWidget 
        background: #fff;

但在 Windows 上我必须再使用一个 QWidget:

QTabWidget::tab > QWidget > QWidget > QWidget 
        background: #fff;

有“真正的”解决方案吗?

【问题讨论】:

【参考方案1】:

你必须使用 QTabBar 而不是 QTabWidget。您应该使用的选择器如下:

// Control the tab-bar with respect to the QTabWidget
QTabWidget::tab-bar 
        left: 5px;


// Control the look of the tab in general
QTabBar::tab 
    border-top-left-radius: 4px;
    border-top-right-radius: 4px;


// Control the look of the tab when it is selected
QTabBar::tab:selected

        // Add css parameters

// Control the look of the tab when hovering over it
QTabBar::tab:hover 

        // Add css parameters


// Control the look of the tab when it is not selected
QTabBar::tab:!selected

        // Add css parameters

【讨论】:

不幸的是它没有用。我进一步诊断了这个问题。我插入一个 QScrollArea 作为带有所需内容的选项卡。如果我忽略滚动区域,您的解决方案将起作用。在 SA 本身上设置背景不起作用。 您要更改选项卡的背景还是显示的小部件的背景? 最好两者都有——以防不使用滚动区域。 QScrollArea *scrollArea = new QScrollArea(); scrollArea->setWidgetResizable(true); scrollArea->setFrameShape(QFrame::NoFrame); scrollArea->setWidget(editorWidget); mLeafWidget->addTab(scrollArea, tabLabel); 你想在每次用户选择标签时改变scrollArea的背景颜色?

以上是关于使用 CSS 设计 QTabWidget 背景的主要内容,如果未能解决你的问题,请参考以下文章

Qt,QWidget,QTabWidget,QTabBar:如何将文本移动到图标的底部?

qtabwidget切换tab如何修改

如何将 QTabWidget 中的一个选项卡设置为在 Qt 中不可移动?

将背景颜色限制为 QTabBar 上的三角形选项卡

Qt:样式化 QTabWidget

Qt:QTabWidget 不响应点击