<QT开发> QT开发工具-之-QT应用程序打包

news2024/11/24 7:24:36

<QT开发> QT开发工具-之-QT应用程序打包

一 前言

笔者为什么会写这篇文章呢?这是因为,笔者使用windows QT开发了一个测试工具。目的是通过TCP/IP测试其它应用程序。首先这个QT程序是笔者自己开发的,所以笔者的电脑当然是可以运行这个QT程序的,但是想要这个QT程序在其它同事的电脑上运行怎么办?他的电脑又没有安装QT程序;而且也没必要直接给QT源码。 所以就产生了一个需求:如何将编译后的QT程序打包成单独的exe执行文件,然后这个单独的exe文件,就可以再其它没有安装QT的电脑上运行了。

基于上述要求,我们以一个简单的QT程序为例,讲解如何打包执行文件。

QT安装可参考笔者另一篇文章:<QT开发> QT开发工具-之-QT安装

二 新建测试QT工程

2.1 新建QT工程

在电脑桌面新建文件夹“QT_TEST”,如下图:
在这里插入图片描述

打开开始菜单,选择QT,现在已安装的“Qt Creator”;笔者安装的是“Qt Creator 9.0.2”,所以就选择这个了。
在这里插入图片描述
打开后界面如下:
在这里插入图片描述
点击 :创建项目 ,参考下图笔者选择即可,如果有其他要求可自行创建。
在这里插入图片描述
输入项目名称可存储路径,笔者这里就存在前面桌面创建的QT_TEST目录中,如下图:
在这里插入图片描述
选择qmake编译程序,当然读者有要求也可以选用cmake等,如下图:
在这里插入图片描述
生成模板程序的,主界面类名称和文件名等的设置,这些都是用默认的名称即可,如下图:
在这里插入图片描述
选择是否翻译的语言,这里就选“无”,有要求的读者,可自行选择。如下图:
在这里插入图片描述
选择编译使用的kit工具,笔者选择6.2.4 64bit 如下图,按需选择即可;
在这里插入图片描述

项目管理配置,默认选择“无”即可,如下图:

在这里插入图片描述

点击完成后,就会自动打开前面配置的QT工程了,如下图:
在这里插入图片描述

2.2 添加UI

在2.1小节打开的界面中,双击“mainwindow.ui”这个文件,就会进入UI编辑界面,如下图:
在这里插入图片描述
将左侧的控件,拖拽到右侧空白区域,读者可自行选择,笔者操作如下图:
在这里插入图片描述
至此我们的QT测试例程准备完毕。

三 编译QT

要想打包程序,那么得先将QT程序编译成可执行文件;编译分“Debug”和“Release”两个版本;对于需要打包的程序来说,一般都是编译Release版本。

QT界面左下方,可选择编译的版本,选择“Release”,如下图:
在这里插入图片描述
选择"Release"完成后,就可点击下方的编译按键,进行编译,如下图:
在这里插入图片描述
有弹框保存,点击“Save All”即可,如下图:
在这里插入图片描述
等待编译完成后会显示程序界面,如下图:
在这里插入图片描述
同时,在存放工程的路径下会生成编译的数据文件,如下图:
在这里插入图片描述

四 打包QT执行文件

4.1 准备构建QT执行文件

首先,在xxx/Desktop\QT_TEST 目录下新建一个文件夹,名为“APP”,如下图:
在这里插入图片描述

将Release输出目录下的执行文件复制到APP文件夹中,如下图:

在这里插入图片描述

在这里插入图片描述
这时如果单独运行“QT_TEST.exe”,是会提示错误的,找不到对应的依赖文件库等;如下图:
在这里插入图片描述
这时就是要使用QT自带的windeployqt 工具,来生成依赖的文件。

4.2 使用windeployqt 构建QT执行文件依赖库

打开QT commend,如下图:
注意:这里选择的cmd 要与 构建QT的kit版本保持一致。笔者用的是"MinGW 64 bit"
在这里插入图片描述
打开后如下图:
在这里插入图片描述
输入以下命令切换到APP目录下:

G:\WorkSoft\QT6.2\6.2.4\mingw_64>C:                                                                                                                                                                                                             C:\Windows\System32>CD ../..                                                                                                                                                                                                                    C:\>cd Users\XX\Desktop\QT_TEST\APP                                                                                                                                                                                                             C:\Users\XX\Desktop\QT_TEST\APP> 

在这里插入图片描述

使用windeployqt 工程,生成关联的QT库文件到当前目录下,命令如下:

windeployqt  QT_TEST.exe

在这里插入图片描述
执行完成后,会生成一些依赖文件,如下图:
在这里插入图片描述
此时双击“QT_TEST.exe”,即可运行该QT程序,如下图:
在这里插入图片描述
但是这样是就有一个比较麻烦的地方,就是如果需要把这个“QT_TEST.exe”给到其它人,那么其所依赖的文件也要一起给出才行,这样就显得有些拖泥带水了。
为了方便,我们需要将“QT_TEST.exe” 包括“APP“文件夹下 的整个内容打包成一个.exe文件,这样单独的一个执行文件就可直接运行了。

4.3 使用Enigma Virtual Box工具打包QT执行文件

下载Enigma Virtual Box,该软件是免费的,下载地址:官网
打开后,选择”Enigma Virtual Box“的”Download“下载安装包。笔者已下载的安装包【Enigma Virtual Box】如下图:
在这里插入图片描述
安装完成后打开该软件,如下图:
在这里插入图片描述
在这里插入图片描述
根据下图选择,并配置:
在这里插入图片描述
①:找到对应的执行文件QT_TEST.exe,如下图:
在这里插入图片描述
②:在①选择完成的基础上会默认一个输出路径,也可手动修改输出路径,笔者设置如下图:
在这里插入图片描述

③:添加打包文件,选择APP文件夹
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
④:选择”Compress files“ 压缩文件,如下图:
在这里插入图片描述
⑤:点击”Precess“,等待打包完成即可,如下图:
在这里插入图片描述
在这里插入图片描述
打包完成后点击”Close“关闭即可,也可直接点击”Run“运行验证。

五 运行验证

打开QT_TEST文件夹,如下:
在这里插入图片描述
双击”QT_TEST_boxed.exe“运行:
在这里插入图片描述
验证可知,打包后的执行文件”QT_TEST_boxed.exe“可单独运行;

后续就可以将”QT_TEST_boxed.exe“传给其它PC运行,而不用关注运行依赖库了。

六 总结

本文主要是讲解QT程序打包步骤,方便QT执行文件的发布使用,如果不足,欢迎沟通交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/719477.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何写出一份还OK的英文简历

大家好,其实对于SAP这个全球超过80%都会用的ERP软件,对于我们顾问而言,永远都有成长空间。 当你技术达到一定水平的时候,你会发现受语言限制更多。 比如国内项目做得差不多了,想尝试国外global项目;或是遇…

关于使用Ajax技术无法获取本地数据的问题

今天在学习Ajax技术时,在按照课程学习的过程中,发现在浏览器中无法获取显示本地文件中的数据。在网上搜索一番后发现,是因为直接在默认浏览器中直接打开HTML文件,而不是通过web服务器访问,会出现跨域请求会受到浏览器的…

C-Free 的最佳替代品 初学者的C/C++ IDE利器 小熊猫C++

IDE选择之困 对于一个C/C的初学者来说,一个好用的IDE会让你快速入门、爱上编程;相反,一个难用的IDE则会让人还没入门就放弃。不要跟我说vimmake,初学者哪里懂这个,windows都不一定玩的溜,玩linux会让人更…

《水经注地图服务》发布的影像数据在水经微图中调用

古人云:“工欲善其事,必先利其器。”意思是说:工匠想要使他的工作做好,一定要先让工具锋利,比如要做好一件事,准备工作非常重要。 语出《论语卫灵公》:子贡问为仁。子曰:“工欲善其…

【AJAX】使用JQ发送AJAX发送请求

首先要引入JQ <script crossorigin"anonymous" src"https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>服务端代码 // 服务端准备 // 1、引入express const express require(express); // 2、创建应用对象 const app expr…

SpringBoot+JWT实现单点登录解决方案

一、什么是单点登录? 单点登录是一种统一认证和授权机制&#xff0c;指在多个应用系统中&#xff0c;用户只需要登录一次就可以访问所有相互信任的系统&#xff0c;不需要重新登录验证。 单点登录一般用于互相授信的系统&#xff0c;实现单一位置登录&#xff0c;其他信任的…

【nav_msgs/Path.h发布路径】

#include <nav_msgs/Path.h> 是一个 ROS (Robot Operating System) 中的包含文件。它是用于包含 nav_msgs/Path 消息类型的头文件,这是一个标准的 ROS 消息类型。 nav_msgs/Path 消息类型常用于机器人导航系统中,以表示路径。这种路径通常由一系列的位置点组成,这些点…

Spirngboot读取html文件到字符串

一、引入依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.3.5</version></dependency> 二、直接读取返回 public String getContent(String path){try {File file ResourceUt…

如何限定IP访问服务器端口(只允许指定IP访问数据库服务器的1433端口)

1、找到“控制面板”->“Windows防火墙”->“高级设置”->“入站规则” 2、选中左侧的"入站规则"&#xff0c;并点击右侧的"新建规则" 3、选择"端口"&#xff0c;点击"下一步" 4、输入要限定访问的端口&#xff0c;这里是要…

瑞吉外卖-Day02

title: 瑞吉外卖-Day02 abbrlink: ‘1’ date: 2023-04-1 19:30:00 瑞吉外卖-Day02 课程内容 完善登录功能新增员工员工信息分页查询启用/禁用员工账号编辑员工信息 分析前端页面效果是如何实现的 为什么点击左边 右边会根着变化 [外链图片转存失败,源站可能有防盗链机制…

【js】JS实现根据两点经纬度位置获取距离:

文章目录 一、JS实现根据两点经纬度位置获取距离&#xff1a;二、效果&#xff1a; 一、JS实现根据两点经纬度位置获取距离&#xff1a; // 根据经纬度计算距离&#xff0c;参数分别为第一点的纬度&#xff0c;经度&#xff1b;第二点的纬度&#xff0c;经度 function getDist…

环二肽试剂128857-77-2,Cyclo(-Gly-Arg-Gly-Asp-Ser-Pro-Ala),定制含D型与L型,S与R构型的氨基酸

规格单位&#xff1a;g |货期&#xff1a;按照具体的库存进行提供 | 纯度&#xff1a;95%试剂描述&#xff1a; 西安凯新生物科技有限公司供应的​Cyclo(-Gly-Arg-Gly-Asp-Ser-Pro-Ala)&#xff08;CAS号&#xff1a;128857-77-2&#xff09;环二肽试剂&#xff0c;是由两…

信不信,我一句话就能惹毛项目经理

早上好&#xff0c;我是老原。 上周有个做技术的粉丝问我&#xff0c;是不是技术做不下去的人才会去转管理&#xff1f; 我和他说&#xff0c;这句话千万别和你周围的项目经理说&#xff0c;不然分分钟和你生气。 不过这也不怪他&#xff0c;确实有很多做技术的人是被迫转管…

ICMP类型

ICMP&#xff08;Internet Control Message Protocol&#xff09;Internet控制报文协议。它是TCP/IP协议簇的一个子协议&#xff0c;用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户…

(三)线程组和线程优先级

&#xff08;三&#xff09;线程组和线程优先级 3.1 线程组&#xff08;ThreadGroup&#xff09;3.2 线程的优先级01、Thread 的优先级02、ThreadGroup 和 Thread 优先级不一致问题 3.3 守护线程&#xff08;Daemon&#xff09;3.4 线程组的常用方法3.5 线程组的数据结构 3.1 线…

@RequestParam注解注意事项

在传参的时候&#xff0c;有的参数不是必传的&#xff0c;代码如下&#xff1a; 比如现在name为必传&#xff0c;position为非必传&#xff0c;我们来用postman测试下&#xff0c; 直接报如上图所示的错误&#xff0c;那么有什么办法阻止这个错误了&#xff0c;只要在不必传的参…

SpringBoot使用mybatis批量新增500万数据到mysql数据库Demo

SpringBoot使用mybatis批量新增500万数据到mysql数据库Demo 说明项目Demo代码地址项目目录mysql对应表建表语句pom.xmlapplication.yml配置类启动类代码OrderInfo 实体类TestController控制层接口层TestServiceTestServiceImpl实现层TestDao数据接口层dao层对应mapper.xml自定义…

熔断降级与限流在开源SpringBoot/SpringCloud微服务框架的最佳实践

目录导读 熔断降级与限流在开源SpringBoot/SpringCloud微服务框架的最佳实践1. 开源代码整体架构设计2. 微服务逻辑架构设计3. 微服务熔断降级与限流规划3.1 微服务熔断降级与限流场景分析3.2 微服务熔断降级与限流技术栈规划3.3 微服务熔断降级与限流技术选型3.3.1 熔断降级中…

自动化测试之selenium工具使用

1. 自动化测试的前提 1.1 什么是自动化&#xff1f; 减少人力成本完成大量重复性工作提高测试效率保证工作的一致性&#xff0c;提高信任度完成手工不能完成的工作 1.2 是否适合做自动化&#xff1f; 时间 &#xff08;项目周期长&#xff09;人员 &#xff08;熟悉自动化&…

神经网络术语解释

目录 Padding&#xff1a; 填充步幅&#xff08;stride&#xff09;Pooling Layer:池化层Batch NormalizationSeparable ConvolutionsREFERENCE Padding&#xff1a; 填充 在进行卷积层的处理之前&#xff0c;有时要向输入数据的周围填入固定的数据&#xff08;比 如0等&#…