首页 Qt官方示例解析系列9:Style Sheet与style编辑器
文章
取消

Qt官方示例解析系列9:Style Sheet与style编辑器

本示例来自5.15.2

实现了什么功能

一个 setStyleSheet 和 setStyle 示例. 通过提供的一个style编辑器可以很方便的动态修改style sheet并实时预览效果。

有个翻页的风格

elesos

用到的知识点

使用了ui文件

使用了qss,qrc资源系统

部分源码解析

最开始就调用 Q_INIT_RESOURCE

解析一下MainWindow类:

继承于QMainWindow

1
nameLabel->setProperty("class", "mandatory QLabel");

里面包了一个StyleSheetEditor

主要代码在StyleSheetEditor类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
构造函数:

用到正则:

regExp("^.(.*)\\+?Style$");

解析:
^ 开始
$ 结束

.匹配除换行符以外的任意字符,一个
然后是(
.*连在一起就意味着0或多个不包含换行的字符
然后是),括号表示这是一个捕获组,可以从匹配结果中提取出来。
\+?	重复\ 1次或更多次,但尽可能少重复
Style


 a(bbb)\Style

QApplication::style()->metaObject()->className();//QWindowsVistaStyle
defaultStyle = match.captured(1);//WindowsVista
其中Q.匹配了,并捕获 "WindowsVista" 作为一个组。captured 方法来获取这个组的值。

当切换样式时,会调用qApp->setStyle(styleName);

Apply按钮按下时,会qApp->setStyleSheet应用。

loadStyleSheet 函数是读取qss文件的内容,最终也是调用了qApp->setStyleSheet

参考

https://doc.qt.io/qt-5/qtwidgets-widgets-stylesheet-example.html

本文由作者按照 CC BY 4.0 进行授权