Qt之常用控件之QWidget(四)
Qt之常用控件之QWidget(四)
- 1.toolTip
- 2.focusPolicy
- 3.styleSheet
- 3.1.图形化界面中设置styleSheet
- 3.2.代码设置styleSheet
- 3.3.RGB
🌟🌟hello,各位读者大大们你们好呀🌟🌟
🚀🚀系列专栏:【Qt的学习】
📝📝本篇内容:toolTip;focusPolicy;styleSheet;图形化界面中设置styleSheet;代码设置styleSheet;RGB
⬆⬆⬆⬆上一篇:Qt常用控件之QWidget(三)
💖💖作者简介:轩情吖,请多多指教(>> •̀֊•́ ) ̖́-
1.toolTip
在我们日常使用各种app和网站的时候,可能经常碰到不明白用处的按钮或者控件,这个时候我们可以将鼠标放到那个控件上去,就会出现一行小字来提醒它的功能,就比如我们这个CSDN的编辑文章页面,你可以将鼠标移到某个功能键那,就可以详细看到它的信息。这个功能我们Qt当中也提供了,即toolTip。
对于toolTip,Qt也提供了API
函数声明 | 函数说明 |
---|---|
void setToolTip(const QString &) | 设置控件提示,⿏标悬停在该 widget 上时会有提示说明 |
void setToolTipDuration(int msec) | 设置提示的持续时间,时间一到自动消失,单位是毫秒 |
接下来代码演示
这里要注意一个点,就是我们的这个setToolTipDuration函数必须是Qt5.2.起步的版本才能使用,在之前的版本还没有引入。
2.focusPolicy
接下来要讲的这个属性是关于焦点的,什么是焦点呢,
简单来说就是能够选中这个元素,将焦点聚焦在这个元素上
。那么我们就需要讨论选中这个元素的方法,也就是焦点策略,通常一个控件获取到焦点就两种方式:可以⽤⿏标选中或者通过键盘 tab 键选中
。当我们选中某个元素后,我们就可以对它进行操作,比如这个元素是输入框,我们就可以进行输入。接下来我们来看一下API
函数声明 | 函数说明 |
---|---|
Qt::FocusPolicy focusPolicy() const | 获取当前控件的焦点政策,返回值是FocusPolicy |
void setFocusPolicy(Qt::FocusPolicy policy) | 给当前控件设置焦点政策 |
FocusPolicy是一个枚举类型,它的取值如下,都是可以从Qt Assistant中查看的到
我们通过中文来了解一下这些取值
Qt::FocusPolicy | 取值说明 |
---|---|
Qt::NoFocus | 控件不会接收焦点 |
Qt::TabFocus | 控件可以通过Tab键接收焦点 |
Qt::ClickFocus | 控件在⿏标点击时接收焦点 |
Qt::StrongFocus | 控件可以通过Tab键和⿏标点击接收焦点 (默认值) |
Qt::WheelFocus | 类似于 Qt::StrongFocus,同时控件也通过⿏标滚轮获取到焦点 (新增的选项, ⼀般很少使⽤) |
我们先来展示鼠标点击的情况,由于录屏无法展示鼠标,就只能凑合看一下,点击顺序是依次从上往下的
接下来是Tab键
像我们的QLabel标签本身不支持Tab和鼠标点击来选中的,因此它的默认focusPolicy属性是NoFocus
3.styleSheet
在我们前端网页中,有一个非常出名的设置样式方式——CSS,它的中文名叫做层叠样式表,它发展了很多年,现在已经非常成熟了。它能够给网页的界面做的非常好看。因此我们的Qt也从这上面借鉴了不少东西过来,开发了一套名为QSS的东西。
3.1.图形化界面中设置styleSheet
在我们图形化界面中想要设置想要的样式,有两种打开方式,一种是右侧的属性框,还有一种是右键控件中选择“改变样式表”
接下来我们可以在编辑样式表中进行编辑,如下图,将标签label设置为“新宋体”,20px大小,italic倾斜,red红色。
上述写的这些属性内容都可以在Qt Assistant中搜索Qt Style Sheets有详细介绍
3.2.代码设置styleSheet
我们也可以使用代码来设置styleSheet,我们可以写一个小功能:如果是日间模式,字体是黑色的,背景是白色的;如果是夜间模式,字体是白色的,背景是黑色的。
先在图形化界面搞个简单的显示和调整框架,使用了一个多行输入文本控件,两个控制日间模式和夜间模式切换的按钮
将按钮与clicked信号相连接
不知道大家有没有在这个效果里面观察到什么?
它的大致功能是没有问题的,但是它的日间模式是有小bug的,当刚启动程序时就是默认日间模式的,观察它的背景色,此时我再点击切换到日间模式,再观察它的背景色。它们两个虽然都是白色,但是我们自己设置的是纯白,但是默认启动时的有轻微发黄。因此我们接下来就要讨论一下另一个话题——RGB
3.3.RGB
大家都知道,我们计算机中的颜色有无数种,它们都是由红绿蓝组成的(RGB,Red,Green,Black)。通过它们三种颜色,就能变化出无数种颜色,就像口红的颜色,虽然都是红色,但是也分好多种红色。像我们的显示器上的每一个像素其实也是由RGB的小灯泡组成的。
在计算机中,我们用一个字节表示R,一个字节表示G,一个字节表示B,因此一共需要三个字节就可以表示一个颜色。通过红绿蓝颜色的承担的程度会显示出不同的颜色,比如R为255表示红色拉满,为0表示红色没有。
因此我们有两种表示颜色的方法:
①rgb(255,255,255)
②#FFFFFF
其实用过PS或者相关取色软件的同学肯定都遇到过第二种写法,那我们去知道我们的窗口的背景色呢?可以使用取色器,PS中就有这个功能,但是QQ和微信的截屏功能就内置取色器
当我们启动电脑QQ后,使用Ctrl+Alt+A就可以调用截屏功能,当你的+移动到任意位置,它都会显示出当前+中心所对应的坐标和色值,微信也是一样的
接下来就用这种方法来看看我们的窗口背景色是多少
#F0F0F0是多少呢?它是十六进制的表示,我们可以化为二进制来看一下
两位十六进制等于八位二进制等于一个字节,因此求出前两位的值就相等于求出了Red,那么Green和Black也是一样的道理,并且跟Red的值是一样,这边直接得出结果:rgb(240,240,240),然后修改代码
🌸🌸Qt之常用控件之QWidget(四)大概就讲到这里啦,博主后续会继续更新更多Qt的相关知识,干货满满,如果觉得博主写的还不错的话,希望各位小伙伴不要吝啬手中的三连哦!如有小伙伴需要Qt的安装包可以私信我,你们的支持是博主坚持创作的动力!💪💪