【小沐学QT】QT学习之资源文件qrc的使用

2024-05-10 1363阅读

文章目录

  • 1、简介
  • 2、qrc添加
    • 2.1 向导方式添加
    • 2.2 代码方式添加
    • 2.3 动态方式添加
    • 3、qrc使用
    • 结语

      1、简介

      Qt 资源系统(Qt Resource System)是一种将图片、数据存储在二进制文件中的一套系统。

      【小沐学QT】QT学习之资源文件qrc的使用

      Qt 资源系统是独立于平台的,因为无论是图片还是翻译文件等,都会被打包成二进制数据。你可以将这些二进制数据保存到可执行文件中,即“静态加载资源”;你也可以将这些二进制数据单独保存在一个文件中,即“动态加载资源”。

      【小沐学QT】QT学习之资源文件qrc的使用

      qrc 文件是基于 XML 格式的资源系统配置文件,该文件中指定了各种资源的信息。完整的将资源文件打包成二进制数据的流程是:写 qrc 文件 -> 用 rcc 编译 -> 二进制数据。

      【小沐学QT】QT学习之资源文件qrc的使用

      2、qrc添加

      2.1 向导方式添加

      新建项目之后:

      在指定项目节点上鼠标右键,选择菜单“Add New…”

      【小沐学QT】QT学习之资源文件qrc的使用

      在弹出的窗口里,依次选择“Qt”,“Qt Resource File”,最后点击最下面的按钮“Choose…”

      【小沐学QT】QT学习之资源文件qrc的使用

      在弹出的窗口中,填写一个自定义的资源名称:resource

      【小沐学QT】QT学习之资源文件qrc的使用

      添加前缀,给资源定义一个路径。

      【小沐学QT】QT学习之资源文件qrc的使用

      在上面定义的前缀路径里,添加所需的图片等资源。

      【小沐学QT】QT学习之资源文件qrc的使用

      在指定资源上鼠标右键菜单,选择“复制资源路径到剪切板”

      【小沐学QT】QT学习之资源文件qrc的使用

      后面有新的图片要添加,可以右键qrc文件,然后Open With -》资源编辑器,就可以重新到添加文件的界面。

      【小沐学QT】QT学习之资源文件qrc的使用

      之后项目打包发布的时候就不需要resource文件夹了,所有的图片信息都以二进制形式存在xxx.qrc文件里了。

      2.2 代码方式添加

      • (1)pro文件添加代码
        RESOURCES += \
            resource.qrc
        
        • (2)编辑.qrc文件

          【小沐学QT】QT学习之资源文件qrc的使用

          2.3 动态方式添加

          动态方式不需要写 pro 文件,需要手动用 rcc 工具编译 qrc 文件,然后用 QResource 类加载。

          (1)手动用 rcc 工具编译 qrc 文件。

          rcc -binary resource.qrc -o resource.rcc 
          

          (2)在程序中使用 QResource 类加载。

          QResource::registerResource("/path/resource.rcc");
          

          备注:rcc 工具的使用请参考官方文档“Resource Compiler (rcc)”。

          3、qrc使用

          • 两种资源路径

            假设已经加载好资源,访问这些资源的两种方式是:

            文件路径「:/images/about.png」
            URL「qrc:///images/about.png」
            

            以QLabel和QPushButton为例添加图片,代码如下:

            #include "mainwindow.h"
            #include "ui_mainwindow.h"
            #include 
            #include 
            #include 
            MainWindow::MainWindow(QWidget *parent)
                : QMainWindow(parent)
                , ui(new Ui::MainWindow)
            {
                ui->setupUi(this);
                
                //标签加载图片
                QLabel *imgLabel = new QLabel(this);
                imgLabel->resize(64,64);
                imgLabel->move(0,0);
                imgLabel->setPixmap(QPixmap(":/image/button/res/test2.jpg").scaled(64,64));
                //按钮加载图片
                QPushButton *imgBtn = new QPushButton(this);
                imgBtn->resize(460,460);
                imgBtn->move(100,100);
                imgBtn->setStyleSheet("QPushButton {background-image: url(:/image/button/res/test6.png)}");
            }
            MainWindow::~MainWindow()
            {
                delete ui;
            }
            

            运行程序如下:

            【小沐学QT】QT学习之资源文件qrc的使用

            结语

            如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭

            如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???

            如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)

            感谢各位童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]