如何在不影响内部选项卡/小部件的情况下设置QTabWidget的样式?

时间:2017-08-09 00:22:04

标签: c++ css qt qt5

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

var p = /(\{\{.+?\}\})/g;
var str = "xyz level1 {{disabled}} what is the {{contentStyle}} result {{what}} is the";
var res = str.match(p); /* here res will either null or an array */
if(res && res.length > 2){
    console.log("yes");
}

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

在样式表更改之前显示相册:

enter image description here

更改后,

enter image description here

以及我想要实现的目标。

enter image description here

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

1 个答案:

答案 0 :(得分:1)

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

目前您的样式定义

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

表示类似"将所有小部件的背景颜色设置为透明"。

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

E.g。你可以说,样式定义只应该应用于某些类的实例,如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'。