一、简述
时隔上一篇文章已经十多天没有更新博客了,实在惭愧,这些天也都在忙活着各种事情。不过时间还是海绵中的水,挤一挤还是有的。
今天继上篇Qt 之 样式表的使用之设置样式的方法 ,来详细谈一谈Qt中样式选择器的一些用法。
经过之前对样式选择器的理解以及查阅Qt文档,整理了一下样式选择器的用法。本篇文章篇幅较长(辛辛苦苦花了三个晚上的时间测试样式、截取效果图、编写文章╮(╯▽╰)╭),对每种样式选择器进行了详细介绍以及详细的示例(上篇中先介绍前四种样式选择器,后三种将在下篇中介绍)。
二、样式选择器
我们先看一下Qt文档中对于不同选择器的解释:
可以在Qt助手中输入 The Style Sheet Syntax 然后查看 Selector Types。
我们可以看到Qt有7种样式选择器,对于不同样式选择器也有相应的解释,那么下面我就给大家简单讲一讲这几种选择器的用法。
(1)、通用选择器(Universal Selector)
我们可以看到文档的解释:适用于所有的控件()。
A、 *{“样式”}
比如我们在样式文件style.qss中写了这么一句 * {color:red}; ,那么加载这个样式文件的窗口上所有部件的文字字体颜色都为红色,所以说如果使用 *{“样式”},那么 {“”} 中的样式将生效于全局。我们一般用于设置全局的通用属性,比如全局的字体的颜色,大小,字体格式等。
B、 作用域 *{“样式”}
看上面第一行样式,在 * 前加上了QStackedWidget ,这有什么用呢,我们看一下效果。
我们看到QToolButton字体是黑色,而QPushButton字体为红色,这样就很好理解了,因为QPushButton在QStackedWidget 中,而QToolButton在最外层Widget中,所以我们这里使用 QStackedWidget *{color:red;} 限制了样式的作用域,只局限于设置QStackedWidget 中所有控件的样式。
既然 *{“样式”} 可以设置全局的样式,那么我设置了全局字体为红色之后,还可以单独设置某一个控件的字体为其他颜色吗?
这当然是可以的,下面我给QPushButton单独设置了 color:blue;样式,而QToolButton不设置任何样式,我们看到QPushButton字体确实是蓝色,而QToolButton字体为全局设置的红色。