文章目录
- QWidget 的 windowlcon 属性
- 使用 qrc文件管理资源
- qrc的使用方式
- 在项目中创建 qrc文件
- 把图片 导入到qrc 文件中
- QWidget 的 windowOpacity属性
QWidget 的 windowlcon 属性
windowlcon 表示 一个窗口的图标
( 只能针对 顶层窗口使用 )
windowlcon() 表示 获取到控件的窗口图标 返回 QIcon 对象 (QIcon表示 一个图标)
setwindowlcon(const Qlcon& icon) 设置控件的窗口图标
想要设置 图标 需要先准备一张图片
并找到对应存放的位置
之前推荐使用堆上创建对象 是因为要确保当前控件的生命周期是足够的 以及 要通过 Qt对象树 来释放对象
QIcon 自身是一个比较小的对象
创建出来的目的 是要设置到某个 QWidget 里面
QIcon 对象本身释放不释放 不影响图标最终的显示
Qlcon 不支持对象树 无法给他执行父对象
所以更 推荐在栈上创建
在构造函数中指定图片的路径
通过 setwindowlcon 函数 将 icon 对象传递进去
运行程序后发现 窗口图标 变为 玫瑰花图片
如果对应的路径写错 就导致找不到该图片 从而继续使用系统自带的图片
所以 相比于绝对路径的方式 使用 相对路径 是更好的
相对路径 是以给定目录为基准 以 . 或者… 的方式开头
假设基准目录为 D:/
给定相对路径 ./th.jpg -> 在基准目录(D:/)直接找 th.jpg
Qt中提供 了 qrc 机制 (就可以从根本生解决问题)
1.确保图片所在路径在目标用户机器上存在
2.确保图片不会被用户搞没了
给Qt项目引入一个额外的xml文件 (后缀名使用 .qrc表示)
在这个xml中把要使用图片资源导入进来 并且在xml中进行记录
Qt在编译项目时 就会根据qrc中描述的图片信息 找到图片内容 并且提取出图片的二进制数据
把这些二进制数据 转成 C++代码 最终编译到exe中
qrc缺点: 无法导入太大的资源文件
使用 qrc文件管理资源
qrc的使用方式
在项目中创建 qrc文件
创建 qrc文件(确保名字不带中文 和 特殊符号)
选择 Qt 中的 Qt Resouce File 点击选择
最终生成当前 qrc 文件 以及界面
把图片 导入到qrc 文件中
(1) 先创建一个前缀 (prefix)
可以把 前缀 理解成 虚拟的目录
这个目录没有在你的电脑上真实存在 是Qt自己抽象出来的
(为了方便 Qt代码中访问到这个图片 Qt就自己抽象出了 虚拟的目录)
点击 Add Prefix 将前缀 名字修改为 /
(2) 把刚才使用的图片导入到资源文件中
Add Files 在创建 Add Prefix 之前是禁用的
创建好 prefix 之后就可以使用了
添加的文件 就是添加到 prefix 下面的
点击 Add Files 会弹出对话框 得到的目录就是当前代码所在的目录
导入图片时 需要确保导入的图片 必须在 resource.qrc 文件的同级目录 或者 同级目录的子目录
所以就可以把 处于D盘的 th.jpg 图片 拷贝到 当前目录中
此时导入成功
当代码中需要访问 qrc中管理的文件时 就需要在路径上带有 : 前缀
由于 创建的前缀为 / 图片文件名为 th.jpg
即 : / th.jpg
QWidget 的 windowOpacity属性
windowOpacity 属性 可以设置 当前窗口的透明度
windowOpacity() 获取到控件的不透明值 返回float 取值为 0.0 -> 1.0 其中 0.0 表示 全透明 1.0 表示 完全不透明
setwindowOpacity( float n) 设置控件的不透明值
设置两个 按钮 表示 增加透明度 和 减少透明度
通过 windowOpacity 获取到 Widget 的透明度 在判断是否在 0.0 到 1.0 之间
增加透明度 则 -0.1 减少透明度 则 +0.1
再通过 setWindowOpacity 函数 设置 透明度
当不断增加透明度时 发现 整个对话框是可以透过去的