如何在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/
如何在Qt资源文件中包含和释放exe等各种类型文件?的更多相关文章
- VBA/VBScript提取Word(*.doc)文件中包含的图片(照片)
VBA/VBScript提取Word(*.doc)文件中包含的图片(照片) 要处理的人事简历表是典型的Word文档,其中一人一份doc,里面包含有个人的照片,如果要把里面的照片复制出来就比较麻烦了 ...
- time.h文件中包含的几个函数使用时须注意事项
time.h头文件中包含以下函数 char* asctime(const struct tm *tm); char* asctime_r(const struct tm *tm,char *buf); ...
- python操作txt文件中数据教程[1]-使用python读写txt文件
python操作txt文件中数据教程[1]-使用python读写txt文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 原始txt文件 程序实现后结果 程序实现 filename = '. ...
- extern的原理很简单,就是告诉编译器:“你现在编译的文件中,有一个标识符虽然没有在本文件中定义,但是它是在别的文件中定义的全局变量,你要放行!”
extern的原理很简单,就是告诉编译器:“你现在编译的文件中,有一个标识符虽然没有在本文件中定义,但是它是在别的文件中定义的全局变量,你要放行!”
- java算法面试题:编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。
package com.swift; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File ...
- 如何在Qt 4程序中优化布局结构(表格讲解,很清楚)
原文地址:http://blog.csdn.net/qter_wd007/archive/2010/03/13/5377882.aspx 在迄今为止讲到每一个例子中,我们只是简单的把窗口部件放置到某个 ...
- 嵌套for in循环组合cat方式文件中包含空格问题
关于循环嵌套使用for循环的空格问题 原创不易,转载请注明 需求: 现有两个功文件,需要将文件拼接 [root@localhost ~]# cat name 111 222 223 333 444 5 ...
- linux批量修改文件中包含字符串的查找替换
find -name "*.env" | xargs perl -pi -e 's|\babcdefg\b|hahaha|g' .env 文件中abcdef 改为hahaha
- linux命令-查找所有文件中包含某个字符串
查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 find .|xar ...
随机推荐
- Spring框架的事务管理的分类
1. Spring的事务管理的分类 1. Spring的编程式事务管理(不推荐使用) * 通过手动编写代码的方式完成事务的管理(不推荐) 2. Spring的声明式事务管理(底层采用AOP的技术) * ...
- script标签的type="test/html"时
们可以在<script>片断中定义一个被JS调用的代码,但代码又不在页面上显示,这时,我们可以使用下面的方法: 1 <script id="commentTemplate& ...
- Ubuntu12.04下搭建Java环境
1.认识需要配置的环境变量 1). PATH: 作用是指定命令搜索路径,打开/etc/environment可以看到PATH变量的值,该变量包含了一系列的路径.那些路径都是一些经常使用的系统命令的目录 ...
- 06 Maven 聚合和继承
Maven 聚合和继承 1. 聚合 2. 继承 <parent> <groupId>org.apache.karaf.demos</groupId> <art ...
- ip白名单 通过* ? 检测IP匹配 轻量级
#include "stdafx.h" #include <windows.h> #include <string.h> #include <asse ...
- 13.11.20 jquery 核心 siblings() 获得同类(不包含自己)循环所有,
jquery 核心1.选择器,2. 创建dom 元素 3. jquery 执行时 4. 延迟执行 5. 循环 6. 计算长度.7.8 获得选择器和所在节点 9. 获得下标 10. 元素存放数据 11 ...
- part1:15-安装Linux系统到开发板
1.Qtopia简介 Qtopia是Trolltech公司为采用嵌入式Linux操作系统的消费电子设备而开发的综合应用平台,Qtopia包含完整的应用层.灵活的界面用户.窗口操作系统.应用程序启动程序 ...
- 关于使用smsx.cab控件做web打印使用方法(转)
注意:在使用之前先告诉下我的痛苦经历 在做WEB项目是我的JSP页面在jsp文件夹里,我把smsx.cab放在js文件夹里(jsp和js是用级别目录) 在本机上测试可以正确下载控件,但是部署到测试服务 ...
- 在EF中使用MySQL的方法及常见问题
有时需要在网上租用空间或数据库,Mysql成本低一些,所以想将sql server转成mysql…… 注意:在安装Mysql时要选择文字集为utf8,否则将不能使用中文(当前也可以在创建数据库时使用u ...
- 2018.08.31 bzoj1419 Red is good(期望dp)
描述 桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付 出1美元.可以随时停止翻牌,在最优策略下平均能得到多少钱. 输入 一行输入两个数R,B,其 ...