【问题标题】:How can I style a QTabWidget without affecting the tabs/widgets inside?如何在不影响内部选项卡/小部件的情况下设置 QTabWidget 样式?
【发布时间】:2018-01-16 16:51:30
【问题描述】:

我有一个 QTabWidget,里面有两个标签。我想将两个选项卡的背景设置为透明以查看下面主窗口的颜色,但是当我设置时

QTabWidget *tabWidget = new QTabWidget(this);
tabWidget-setStyleSheet("background-color: transparent;");

它使标签内的小部件的所有背景透明,而不是标签本身。

样式表更改前显示的相册:

改变后,

以及我想要实现的目标。

如果需要,我可以提供更多代码。提前致谢!

【问题讨论】:

    标签: c++ css qt qt5


    【解决方案1】:

    样式表应用于被触摸的小部件及其所有子项。

    当前你的样式定义

    QTabWidget *tabWidget = new QTabWidget(this);
    tabWidget-setStyleSheet("background-color: transparent;");
    

    说“将所有小部件的背景颜色设置为透明”。

    ...但您可以限制样式表的适用性。

    例如你可以说,样式定义应该只应用于某些类的实例,比如 QLabel:

    QTabWidget *tabWidget = new QTabWidget(this);
    tabWidget-setStyleSheet("QLabel{ background-color: transparent; }");
    

    还有更多的可能性可以更详细地定义适用性: The Qt Style Sheet Syntax, Selector Types

    与您的情况相关的是可以将样式定义的适用性限制为具有特定名称的对象:

    QTabWidget *tabWidget = new QTabWidget(this);
    tabWidget-setStyleSheet("QWidget#custom_tab, QWidget#templates_tab{"
                            "    background-color: transparent;        "
                            "}");
    

    您必须确保对象名称匹配(此处:“custom_tab”和“templates_tab”。

    【讨论】:

      猜你喜欢
      • 2012-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 2018-02-05
      • 2017-08-22
      • 1970-01-01
      相关资源
      最近更新 更多