欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > Qt qrc机制

Qt qrc机制

2025/7/8 22:29:59 来源:https://blog.csdn.net/Dirty_artist/article/details/141994042  浏览:    关键词:Qt qrc机制

文章目录

    • 0. 前言
    • 1. qrc机制
    • 2. qrc使用

0. 前言

要设置窗口图标,就需要有图片及其图片所在路径,在本机上可能没什么问题,但是换了一个机器,路径可能不一致或者图片丢失,这就导致图片显示不出来。

Qt引入qrc机制,可以解决上述问题:

  1. 确保图片所在路径在目标用户机器上存在
  2. 确保图片不会丢失

1. qrc机制

给Qt项目引入一个额外的xml文件(后缀名使用.qrc),这个xml中把要使用的图片资源导进来,并在xml当中记录

后续在Qt编译项目的时候,就会根据qrc中描述的信息,找到图片内容,并且提取图片的二进制数据,把这些二进制数据转成C++代码,最终编译到exe里面,这样,图片就变成了exe的一部分。

当然,这个图片资源较小,是很方便的,但如果弄很大的资源文件(几个GB),那qrc就无能为力了。

这样会导致编译特别慢,生成的exe文件,会特别大。

2. qrc使用

首先在项目当中创建一个qrc文件

文件名不要带中文名和特殊字符

image-20240907115412417

然后将图片导入qrc文件

  1. 创建一个前缀Prefix

    这个所谓的前缀,可以理解为虚拟目录,这个目录在我们电脑上不是真是存在的,是Qt自己抽象出来的。因为qrc机制本质就是把图片的二进制数据转成C++代码,为了方便Qt代码中访问到这个图片,Qt自己就抽象一个虚拟目录。

    image-20240907115842090

  2. 将图片导入到资源文件当中
    image-20240907120016378

    此时得到的目录就是当前代码所在的目录

    导入图片的时候,必须确保导入的图片在resource.qrc文件的同级目录或者同级子目录里面。

    所以想要把图片拷贝到当前项目目录即可

    看到这个效果,就说明导入成功

    image-20240907120248827

#include "widget.h"
#include "ui_widget.h"
#include<QIcon>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//QIcon icon("./logo.jpg");QIcon icon(":/logo.jpg");this->setWindowIcon(icon);
}Widget::~Widget()
{delete ui;
}

当代码中需要访问qrc中管理的文件的时候,就需要在路径上带有:前缀

image-20240907120615770

qrc中导入的图片资源,就会被转成qrc_resource.cpp这个C++代码,Qt编译的时候,这个cpp文件就一起被编译到了exe当中。

当exe程序运行的时候,图片的数据也会被加载到内存当中了。

image-20240907121112670

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词