Qt样式表

1  简介

参考视频:https://www.bilibili.com/video/BV1XW411x7NU?p=27

样式表的作用就是为了让我们的控件变得好看。给窗口设置风格、颜色、图片等。

2  使用方式

使用控件的setStyleSheet方法来进行样式的设置。

用法:void setStyleSheet(const QString &styleSheet)

其中styleSheet是符合某种规范的字符串,用法和HTML CSS差不多,

可以通过查看帮助文档中的例子来学习。

3  举例说明

1)以QLabel为例进行说明

设置字体颜色、背景色、以及背景图片:

1     ui->label->setStyleSheet("QLabel{color:red;"  //前景色
2         "background-color:black;"  //背景色
3         "background-image :url(:/new/prefix1/superman.jpg);"  //背景图片,自动伸缩
4         "}");

把窗口最大化,效果如下:

可以看出,背景图片的大小不会跟着窗口的大小自动伸缩,这里我们就要用到盒子模型才行。

2)盒子模型

补充说明一下,什么是盒子模型,官方说明如下:

大致意思是:我们使用样式表时,每一个控件被当作一个盒子,只不过我们看不到,模型如下:

其中,margin、border-width、padding默认是设置为0的。如果我们要让背景随着窗口的大小自动伸缩,我们需要使用“border-image”,我们更改代码测试一下:

1     ui->label->setStyleSheet("QLabel{color:red;"  //前景色
2         "background-color:black;"  //背景色
3         "border-image:url(:/new/prefix1/superman.jpg);"  //背景图片,自动伸缩
4         "}");

也把窗口最大化,可以看出,背景图片随着窗口可以进行自动伸缩。

盒子模型的其它用法,我现在不熟悉,就不说明了。

3)伪状态 Pseudo-States

简单的说,伪状态就是基于控件不同的状态我们可以设置不同的样式,以按钮为例进行说明,例如:我们将鼠标放在按钮上时可以显示一个背景,点击按钮可以显示一个背景,释放按钮可以显示一个背景。

下面就简单说说代码的实现:

1     ui->pushButton->setStyleSheet("QPushButton{ border-image:url(:/new/prefix1/close.png);}"
2                                   "QPushButton:hover{ border-image:url(:/new/prefix1/status.png);}"
3                                   "QPushButton:pressed{ border-image:url(:/new/prefix1/open.png);}"
4                                   );

上面的代码的运行结果:

 每种控件的样式表都不相同,很多我也不知道,需要用到的时候去查帮助文档即可。

原文地址:https://www.cnblogs.com/mrlayfolk/p/13185485.html