【Qt】qt常用控件之QIcon 以及 qrc机制设置图片路径(QtCreator)

文章目录

  • [1. QIcon / windowIcon](#1. QIcon / windowIcon)
  • [2. setIcon() 与 setwindowIcon()](#2. setIcon() 与 setwindowIcon())
    • [2.1 setIcon() 介绍与使用](#2.1 setIcon() 介绍与使用)
    • [2.2 setWindowIcon 介绍与使用](#2.2 setWindowIcon 介绍与使用)
  • [3. 路径问题 & qrc机制的引入](#3. 路径问题 & qrc机制的引入)
    • [3.1 绝对路径 / 相对路径 的问题](#3.1 绝对路径 / 相对路径 的问题)
    • [3.2 qrc机制](#3.2 qrc机制)
    • [3.3 在QtCreator下利用qrc机制引入图片](#3.3 在QtCreator下利用qrc机制引入图片)

1. QIcon / windowIcon

QIcon

  • QIcon 是Qt 框架中的一个类,用于表示图标。它可以加载各种格式的图像文件,并用于在 Qt 应用程序中显示图标。

  • 使用 QIcon 类,可以将图标设置为窗口标题栏、工具栏按钮、菜单项等控件的图标

windowIcon

windowIcon,即应用程序 窗口的图标,有以下两接口:

API 说明
windowIcon() 获取控件的图标,并返回QIcon对象
setWIndowIcon() 设置控件的窗口图标

2. setIcon() 与 setwindowIcon()

2.1 setIcon() 介绍与使用

  • setIcon() 是用于 设置窗口部件(如按钮、标签等)的图标。它可以将一个 QIcon 对象设置为窗口部件的图标,用于在界面中显示该部件的图标。

示例:

在下面的例子中,我们将下面的图标设置到按钮上:

cpp 复制代码
QPushButton *button = new QPushButton(this);
QIcon icon("D:\\Coder\\pictures\\icons\\camera");
button->move(100, 100);
button->setIcon(icon);

通过 setIcon() 设置的图标将会显示在指定的窗口部件上。


2.2 setWindowIcon 介绍与使用

  • setWindowIcon() 是用于 设置顶级窗口(如主窗口、对话框等)的图标。它可以将一个 QIcon 对象设置为顶级窗口的图标,用于在窗口的标题栏、任务栏等位置显示该图标。

示例:

cpp 复制代码
QMainWindow *window = new QMainWindow(this);
QIcon icon("D:\\Coder\\pictures\\icons\\camera");
window->setWindowIcon(icon);
window->show();

通过 setWindowIcon() 设置的图标将会显示在窗口的标题栏、任务栏等位置。


3. 路径问题 & qrc机制的引入

3.1 绝对路径 / 相对路径 的问题

首先简单提一点:

  • 图标文件路径应该是正确的,否则图标可能无法加载。图标文件路径,我们有两种选择:
  • 使用转义符号\\正斜杠/来表示路径分隔符,因为反斜杠可能被解释为转义字符

对于上面举的两例:

  • 我们所使用的路径是绝对路径,即开发机上的路径。
  • 而程序最终要打包给用户使用,绝对路径显然是没法正确将图片设置出来。
  • 而优于绝对路径,我们可以选用相对路径,如果将图片放到程序根目录或子目录中,使用时直接搜索,但依然面临问题,如果用户无意把图片删掉,那么程序最终执行依然会缺少相应资源。
  • 此时我们引入qrc机制

3.2 qrc机制

概念

  • 首先,qrc机制可以确保不会出现上述的两个问题,可以确保:
    1. 图片所在的路径一定会在用户机器存在。
    2. 片不会被用户删掉。
  • qrc机制 用于将资源文件嵌入到应用程序中
    • 通过使用qrc机制,开发人员可以将图像、字体、样式表和其他资源文件作为二进制数据打包到应用程序中,而无需将它们作为外部文件进行管理。

原理

  1. QRC机制使用特殊的URL格式来引用资源文件。所有资源文件的路径都是相对于QRC文件本身的。

  2. 给Qt项目 引入一个xml文件(以.qrc为后缀),将要使用的资源文件导入到xml文件中并记录

  3. Qt在项目编译时,会根据qrc中的图片信息,提取图片的二进制信息,并将二进制数据转换为代码,最终写入到exe中

缺点

  • qrc机制的缺点:无法导入过大的资源文件

3.3 在QtCreator下利用qrc机制引入图片

我们在当前Qt项目中 添加Qt资源文件,如下图所示:

首先添加前缀(即文件路径),随后在所添加的qrc文件中添加文件:

需要注意的是,添加的资源文件一定要在res.qrc文件的同级目录或子目录。

添加图片后,如下:

此时我们执行下面的代码,会有如下结果:

相关推荐
我曾经是个程序员3 分钟前
C#Directory类文件夹基本操作大全
服务器·开发语言·c#
中草药z1 小时前
【Spring】深入解析 Spring 原理:Bean 的多方面剖析(源码阅读)
java·数据库·spring boot·spring·bean·源码阅读
地球资源数据云1 小时前
全国30米分辨率逐年植被覆盖度(FVC)数据集
大数据·运维·服务器·数据库·均值算法
Ahern_1 小时前
Oracle 普通表至分区表的分区交换
大数据·数据库·sql·oracle
夜半被帅醒2 小时前
MySQL 数据库优化详解【Java数据库调优】
java·数据库·mysql
BUG 4042 小时前
LINUX--shell
linux·运维·服务器
lw向北.2 小时前
Qt For Android之环境搭建(Qt 5.12.11 Qt下载SDK的处理方案)
android·开发语言·qt
菜鸟小白:长岛icetea2 小时前
Linux零基础速成篇一(理论+实操)
linux·运维·服务器
不爱学习的啊Biao2 小时前
【13】MySQL如何选择合适的索引?
android·数据库·mysql
破 风2 小时前
SpringBoot 集成 MongoDB
数据库·mongodb