如何在Qt资源文件中包含exe等各种类型文件?

操作系统:Windows 10 X64 企业版

Qt: 5.8.0

QtCreater: 4.2.1

刚刚开始学习Qt,不断遇到困难和挑战,前几天在各个QQ群里询问如何在Qt的资源文件中包含和释放exe可执行文件,结果没有谁给我一个准确的答复,包括问写过图书的选手!!我现在非常鄙视写书的选手,是高傲还是为了面子,对于我的问题根本就不回答!!!不仅仅是一个写书选手这样,很多个!!!我相信很多作者都是乐于帮助别人,极少数人才这个德性!!!!

Qt做为开发了这么多年的跨平台GUI开发解决方案,我相信这应该不是问题,只是我不了解而已!在网上搜索,绝大多数的关于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/

时间: 2024-12-28 16:00:26

如何在Qt资源文件中包含exe等各种类型文件?的相关文章

C语言头文件中包含的函数

math.h常用函数 int  abs   (int x); double  acos  (double x); double  asin  (double x); double  atan  (double x); double  atan2 (double y, double x); double  atof  (const char *s); double  ceil  (double x); double  cos   (double x); double  cosh  (double

老男孩教育每日一题-2017年4月13日-当你删除的多个文件中包含空格或其他特殊字符,请问如何做

当你删除的多个文件中包含空格或其他特殊字符,请问如何做 创建测试环境: mkdir -p  /oldboy/0413 cd   /oldboy/0413 touch oldboy" "{01..10}.log 别上来就rm -f oldboy*.log哟.

time.h文件中包含的几个函数使用时须注意事项

time.h头文件中包含以下函数 char* asctime(const struct tm *tm); char* asctime_r(const struct tm *tm,char *buf); char* ctime(const time_t *timep); char* ctime_r(const time_t *timep,char *buf); struct tm *gmtime(const time_t *timep); struct tm *gmtime_r(const tim

处理文件,用户指定要查找的文件和内容,讲文件中包含要查找内容的每一行都要输出到屏幕

处理文件,用户指定要查找的文件和内容,讲文件中包含要查找内容的每一行都要输出到屏幕: 预先有一个名为 cars.py 的文件,其内容为: cars = ['honda','yamaha','suzuki'] print(cars) cars[0] = 'ducati' print(cars) cars.append('马大哈') print(sorted(cars)) print(cars) 接下来写生成代码: def check_file(): # 创建一个名为 check_file 的生成器

django如何在 search_fields和list_filter 中包含外键字段

django如何在 search_fields和list_filter 中包含外键字段 我们知道在 admin.py 中定义 search_fields 可以控制在后台管理界面中能够搜索的字段. 但是,当 search_fields 包含外键字段时,此时进行搜索会报错: TypeError at /admin/hello/foo/ Related Field has invalid lookup: icontains 解决的办法是修改 search_fields 中的外键字段名称. 将 sear

在类的头文件中尽量少引入其他头文件 <<Effective Objective-C>>

与C 和C++ 一样,Objective-C 也使用"头文件"(header file) 与"实现文件"(implementation file)来区隔代码.用Objective-C 语言编写"类"(class)的标准方式为:以类名做文件名,分别创建两个文件,头文件后缀用.h,实现文件后缀用.m.创建好一个类之后,其代码看上去如下所示: // EOCPerson.h #import <Foundation/Foundation.h>

檢查php文件中是否含有bom的php文件

原文链接: http://www.cnblogs.com/Athrun/archive/2010/05/27/1745464.html 另一篇文章:<关于bom.php>,http://hi.baidu.com/aullik5/blog/item/f0e589127a28a2f0f7039e5e.html 另一篇文章:<[BOM]PHP程序的UTF8神秘编码问题之解>,http://www.mlecms.com/tech/56.html 类似WINDOWS自带的记事本等软件,在保存

OC高效率52:(二)类的头文件中尽量少引用其他头文件

// //  EOCPerson.h //  OC高效率52:类的头文件中尽量少引用其他头文件 // //  Created by Zoujie on 15/10/8. //  Copyright ? 2015年 Zoujie. All rights reserved. // #import <Foundation/Foundation.h> //#import "EOCEmployer.h" @class EOCEmployer;//向前申明该类,将引入头文件的时机尽量延

将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件

原文地址:将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件 需求如下:编写一个程序 将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中 a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔. 废话不多说,直接上代码: package javase.arithmetic;   import com.google.common.base.Charsets; import com.google.common.base.Joiner;