Qt常用控件之QWidget(三)

Qt常用控件之QWidget(三)

🌟🌟hello,各位读者大大们你们好呀🌟🌟

🚀🚀系列专栏:【Qt的学习】

📝📝本篇内容:windowOpacity;cursor;图形化界面设置cursor;代码设置cursor;font;图形化界面设置font;代码设置font;在浏览器中查看字体的属性

⬆⬆⬆⬆上一篇:Qt练习小程序(无法拒绝的按钮)

💖💖作者简介:轩情吖,请多多指教(>> •̀֊•́ ) ̖́-

1.windowOpacity

接下来要讲的这个属性是用来调节透明度的,但还是要先知道一下它的发音

它也有两个API,分别是获取不透明值和设置不透明值

函数声明 函数说明
qreal windowOpacity() const 获取当前的不透明度,返回类型是qreal,其实就是浮点类型,取值的范围是0.0-1.0区间,其中0.0表示全透明,1.0表示完全不透明
void setWindowOpacity(qreal level) 设置不透明度

来个简单的代码演示


我们可以仔细观察一下,它增加或减少不透明度时打印的数值并不是精确的,这主要是因为浮点数在底层存储的时候并不是以精确数值存储的,但是这种方法运算快,占用空间小。因此在我们有的时候需要进行浮点数相等判断时,不能直接使用"浮点数+浮点数==浮点数"来判断。

其实一旦超过我们的不透明范围值(0.0-1.0)后,继续增加或减少都不会有任何效果,但是我们的代码中还是非常有必要加上范围判断,这种被称之为是double check(双重检查)。这主要是为了保证它的安全性,因为作为使用者你不敢保证库中的代码有没有对此进行过超出范围的判断,而库的编写者也不敢保证使用者一定会写判断范围代码,因此双方都进行判断,即使一方出现问题,也不至于造成事故。

2.cursor

这个属性中文翻译是光标的意思,简单来说就是当鼠标在某个控件上停留时就会显示出的形状,就像我们现在在这里输入时,显示的光标是Ⅰ,而选择别的内容的时候又变成箭头,所以说同一个界面中,不同的控件可以设置不同的光标这个属性也需要看一下它的读音

接下来看一下它的API

函数声明 函数说明
QCursor cursor() const 获取当前控件设置的cursor属性,返回值是QCursor
void setCursor(const QCursor &) 设置控件的光标,当鼠标停留在此控件上时,会显示出光标的形状
QGuiApplication::setOverrideCursor(const QCursor& cursor) 设置全局光标的形状,对整个程序中的所有 widget 都会⽣效,覆盖上⾯的 setCursor 设置的内容

2.1.图形化界面设置cursor

不得不承认图形化非常方便,只需要将属性列表中的cursor的值进行选择即可

2.2.代码设置cursor

我们先用代码演示一下使用Qt内置的光标如何用代码实现

代码非常简单,就两句话,我们还可以通过WaitCursor按住ctrl进行跳转查看其他的内置光标

也可以看一下cursor的构造函数是怎么样的,就能理解它这里的参数传递情况

QCursor也支持我们使用自定义的图片来作为光标,它的用法其实和之前讲的窗口图标是类似的道理,将图片导入qrc进行管理,我们就可以使用代码基于图片构造出光标对象进行设置,接下来用代码来演示一下

创建新的qrc文件




最后是这个界面就说明设置成功了

接下来就是代码编写了

其中还牵扯到了另一个新的类QPixmap,它的作用还是很大的,用来修改编辑图片,其中还用到了调整图片大小的函数,函数说明见下图

由于光标无法进行截屏或者录屏,就没法展示最终效果了

这里还有一个点注意就是我们的鼠标点击时,默认是图片中间位置

我们可以进行通过参数进行修改

修改我们的代码

3.font

font是用来设置字体的属性的

函数声明 函数说明
const QFont & font() const 获取当前控件的字体属性,返回QFont类型,QFont类型是字体属性的集合
void setFont(const QFont &) 设置当前控件字体属性
QFont的属性 属性说明
family 字体族,设置字体,比如"楷体"
pointSize 字体大小
weight 字体粗细.粗细程度用数值控制,范围[0,99],数值越大越粗
bold 是否加粗. 设置为 true, 相当于 weight 为 75. 设置为 false 相当于weight 为 50
italic 是否倾斜
underline 是否带有下划线
strikeOut 是否带有删除线

3.1.图形化界面设置font

其实图形化界面很方便,只需要在右侧的属性面板进行选择和勾选就可以设置字体的属性。

并且我们可以发现我们的Qt Designer能够对界面上属性设置支持"实时预览",改了啥属性都能立马显示出来

3.2.代码设置font

在一般的简单的程序中可以直接使用图形化,但是假设如果我们的程序在运行过程中需要修改文字的相关属性就只能使用代码了
其实我们讲了那么多的内容,也能发现规律,在前面我们谈到的QFont的一些属性,要进行设置的时候,只需要在前面加上"set"即可成为一个设置成员函数,并且Qt中大部分类和函数都是有规律可循的。并且不知道大家有没有注意到,最近写的控件属性类都没有进行设置进对象树,都是直接在栈上开辟,这主要是这些类都是设置进了控件内部,因此即使释放了内存也没关系。

3.3.在浏览器中查看字体的属性

假设你在一些网页上看到某些文字的颜色或者属性很好看,那此时我们也可以通过在网页页面进行鼠标右键点击检查进入开发者模式,并点击左上角的按钮,此时就可以将鼠标放到某些文字上观察属性

🌸🌸Qt常用控件之QWidget(三)大概就讲到这里啦,博主后续会继续更新更多Qt的相关知识,干货满满,如果觉得博主写的还不错的话,希望各位小伙伴不要吝啬手中的三连哦!如有小伙伴需要Qt的安装包可以私信我,你们的支持是博主坚持创作的动力!💪💪

相关推荐
深思慎考2 小时前
LinuxC++项目开发日志——基于正倒排索引的boost搜索引擎(1——项目框架)
linux·c++·搜索引擎
Yilena2 小时前
跟进 JDK25:将虚拟线程安全引入生产的权衡与实战
java·开发语言·虚拟线程·结构化并发·jdk25
liu****2 小时前
负载均衡式的在线OJ项目编写(二)
c++·负载均衡·个人开发
_bong2 小时前
python的高阶函数
开发语言·python
MSTcheng.2 小时前
【C++】如何搞定 C++ 内存管理?
开发语言·c++·内存管理
钟离墨笺2 小时前
Go语言-->切片注意点及理解
java·开发语言·golang
余大侠在劈柴2 小时前
go语言学习记录9.23
开发语言·前端·学习·golang·go
麦麦鸡腿堡2 小时前
Java的数组查找
java·开发语言
小欣加油3 小时前
leetcode 98 验证二叉搜索树
c++·算法·leetcode·职场和发展