级联特性
什么是级联特性?
在对一个widget设置样式表时,可以使用QApplication::setStyleSheet()在整个应用程序上设置,也可以使用QWidget::setStyleSheet()在特定的小部件(及其子部件)上设置。如果在不同的级别上设置了几个样式表,Qt将从所有设置的样式表中派生有效的样式表
,这叫做级联。注意:这里是派生出有效的样式表也就是说一个widget如果没有设置样式表那么它将遵从它的祖先(父母,祖父母等)的样式表,如果该widget设置了样式表那么它将从祖先的样式表和自己的样式表选择对应的属性和值合成来成为自己的样式表。合成规则一般是遵从祖先的样式表同时更新自己样式表对应的属性和值。
代码演示
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->centralWidget()->setStyleSheet("QLabel{color:blue;border: 1px solid black}");
ui->label_4->setStyleSheet("QLabel{color:red}");
}
MainWindow::~MainWindow()
{
delete ui;
}
效果图
可以看到我们在对ui->label_4->setStyleSheet("QLabel{color:red}");
发现label_4
的样式表是文字变成红色同时边框是 1px solid black
是label_4
祖先样式表的值。