zoukankan      html  css  js  c++  java
  • 如何在Qt资源文件中包含和释放exe等各种类型文件?

    操作系统:Windows 10 X64 企业版

    Qt: 5.8.0

    QtCreater: 4.2.1

    刚刚开始学习Qt,不断遇到困难和挑战,前几天在各个QQ群里询问如何在Qt的资源文件中包含和释放exe可执行文件,结果没有谁给我一个准确的答复!!!!

    Qt做为开发了这么多年的跨平台GUI开发解决方案,我相信这应该不是问题,只是我不了解Qt而已!在网上搜索,绝大多数的关于Qt资源文件的文章,基本上都是照抄Qt的官方说明而已,并没有提到我说的问题!!!经过努力,终于解决了!!!下面我将详细说明如何做到这一切,以后遇到类似问题朋友可以立即解决!!!!

    一,Qt资源文件系统的官方说明:

    The Qt resource system is a platform-independent mechanism for storing binary files in the application's executable. This is useful if your application always needs a certain set of files (icons, translation files, etc.) and you don't want to run the risk of losing the files.

    从官方说明来看,应该是可以包含exe,否则不会有etc这样的说明,那么就需要我来搞定这个问题了!!!

    二,实现在Qt资源文件中包含exe等各种文件。

    1,建立Qt资源文件。

    (1),在QtCreater中的工程上面鼠标右键,在弹出菜单中选择"添加新文件..."。

    (2),在"新建文件"对话框中依次选择"Qt"->"Qt Resiyrce File ",随后点击"Choose"按钮。

    (3),在"名称"文本框中输入想要使用的资源文件名称,我用"aa"做为我的资源文件名称,随后点击"下一步"按钮。

    (4),这一步不做任何修改,点击"完成"按钮。

    (5),资源文件创建完毕的截图,左侧"资源"项目下的"aa.qrc"就是我刚刚创建的资源文件。

    2,添加各种类型文件到Qt资源文件中。

     如何打开资源文件编辑器?在QtCreater的编辑模式下,在资源文件上鼠标右键,最后点击"Open With"->"资源编辑器",就打开了Qt的资源编辑器了,随后就可以对资源文件进行各种管理操作了!

    (1),添加资源文件前缀。

    A,点击"添加"下拉列表,选择"添加前缀"。

    B,修改当前前缀名称,我把代表"exe"可执行文件的前缀修改成了"exe",所有可执行文件都将添加到这个前缀下。

    (2),添加资源文件到对应前缀里。

    A,点击"添加"下拉列表,选择"添加文件"。

    B,选中需要添加的文件后,点击"打开按钮"。

    C,添加文件到资源文件前缀中之后的截图。

    通过上面操作,就在指定的前缀下添加了资源文件了!我用同样方法随后添加了另外两种资源文件,最后截图如下:

    三,编程实现释放Qt资源文件中的各种文件。

    程序最终执行结果截图:

    释放资源文件中各种类型文件的实现代码:

    void MainWindow::on_pushButton_2_clicked()
    {
    
        /*把资源文件中的文件保存到指定位置*/
    
        QString resProfiex;//资源文件前缀变量
        QString resFile; //资源文件中的文件名称变量
        QString saveFile;//要保存文件的全路径名称变量
    
        //1,保存"Project1.exe"可执行文件
    
        resProfiex="exe";//资源文件前缀
        resFile ="Project1.exe";//资源文件中的文件名称
        saveFile="h:/test.exe";//要保存文件的全路径名称
    
        //执行保存资源文件操作
        this->saveResourecFile(resProfiex,resFile,saveFile);
    
        //2,保存"BeatIt.mp3"音乐文件
    
        resProfiex="mp3";//资源文件前缀
        resFile ="BeatIt.mp3";//资源文件中的文件名称
        saveFile="h:/BeatIt.mp3";//要保存文件的全路径名称
    
        //执行保存资源文件操作
        this->saveResourecFile(resProfiex,resFile,saveFile);
    
        //3,保存"test.png"图片
    
        resProfiex="pic";//资源文件前缀
        resFile ="test.png";//资源文件中的文件名称
        saveFile="h:/test.png";//要保存文件的全路径名称
    
        //执行保存资源文件操作
        this->saveResourecFile(resProfiex,resFile,saveFile);
    }
    
    void MainWindow::saveResourecFile(QString resProfiex,QString resFileName,QString destFullPathFileName) {
    
        //组装资源文件中的文件
        QString resFile;
        resFile=":/"+resProfiex+"/"+resFileName;
    
        QFile file;
        file.copy(resFile,destFullPathFileName);
    }

    程序全部源码下载:

    http://download.csdn.net/detail/sunylat/9778054

    这是我的第一个Qt程序!!!!!

    参考:

    1,http://doc.qt.io/qt-5/resources.html

    2,http://www.cnblogs.com/dcb3688/p/4607956.html

    3,https://www.devbean.net/2012/08/qt-study-road-2-resource-files/

  • 相关阅读:
    mini2440 UBoot启动过程完全分析
    Linux Shell常用命令学习(1)
    S3C6410启动模式介绍
    漫画与新媒体的传播思考
    注册表修改启动项
    邮件主题是乱码的原因gbk 在utf8 显示问题
    移动 电话费 套餐
    java 异常的问题讨论
    领结的打法
    c# 字符之间的转换
  • 原文地址:https://www.cnblogs.com/sunylat/p/6535976.html
Copyright © 2011-2022 走看看