Hello World程序演示Qt项目的建立、编译、运行和发布
一、Qt项目的建立
1、选择项目模板。
选择“文件-->新建文件或工程”,在选择模板页面选择Qt C++项目中的“Qt Gui应用”一项,然后单击“选择”按钮。

2、输入项目信息。
在“项目介绍和位置”页面输入项目的名称为helloworld,然后单击创建路径右边的“浏览”按钮,选择把要创建的项目放在哪个位置:

3、输入类信息。
在“类信息”页面中创建一个自定义类。这里设定类名为HelloDialog,基类选择QDialog,表明该类继承自QDialog类,使用这个类可以生成一个对话框界面。这时下面的头文件、源文件和界面文件都会自动生成,保持默认即可:

4、设置项目管理。
此项目不涉及,直接单击“完成”:

5、完成项目设置。
这里只有一个Windows桌面版本的Qt4.7.2,所以默认选择它就可以了。然后单击“完成”按钮完成项目的创建。

项目建立完成后会直接进入编辑模式。
自动生成的项目文件列表如下:

双击hellodialog.ui文件可以进行界面设计,界面简单设计如下:

二、项目的编译、运行
可以使用快捷键Ctrl+R或者通过按下左下角的运行按钮
来编译运行程序。这时可能会弹出“保存修改”对话框。这是因为刚才在设计模式更改了界面,而hellodialog.ui文件被修改了但是还没有保存。现在要编译运行该程序,就要先保存所有文件。可以选中“构建之前总是先保存文件”选项,以后再运行程序时就可以自动保存文件。然后单击“保存所有文件”按钮:

运行结果如下:

直接运行生成的可执行文件(helloworld-build-desktop\debug目录下):(需要复制4个dll文件)
双击helloworld.exe运行,弹出如下所示的警告对话框,提示缺少mingwm10.dll文件,可以想到应用程序运行是需要dll动态链接库的,所以应该去Qt的安装目录下寻找该文件。在Qt安装目录的bin目录(笔者这里的路径是D:\Qt\4.7.2\bin)中找到该文件,把这里的mingwm10.dll文件复制到debug文件夹中。这时运行程序又会提示缺少其他的文件,可以依次将它们复制过来,一共有4个文件,分别是mingwm10.dll、libgcc_s_dw2-1.dll、QtCored4.dll和QtGuid4.dll。再次运行程序发现已经没有问题了。

直接运行生成的可执行文件(不需要复制dll文件,但需要设置系统环境变量)
如果想不复制dll文件就可以直接运行程序,那么需要将D:\Qt\4.7.2\bin目录加入到系统Path环境变量中去,这样程序运行时就可以自动找到bin目录中的dll文件了。
对于win7系统设置环境变量操作如下:





在变量值的最后添上“;D:\Qt\4.7.2\bin”(注意前面有一个英文的分号),然后单击确定即可。
三、程序的发布
现在程序已经编译完成,那么怎样来发布它,让它在别人的计算机上也能运行呢?前面生成的debug版本的程序依赖的dll文件很大,那是因为debug版本的程序中包含了调试信息,可以用来调试。而真正要发布程序时,要使用release版本。
helloworld程序的release版本的编译:
在左下角的目标选择器(Target selector)中将构建目标设置为Release,然后单击运行图标
。

编译完成之后再看工程目录中的release目录中,已经生成了helloworld.exe文件。它的大小与前面的debug版本的helloworld.exe的大小相差很大。
如果前面已经添加了Path系统环境变量,那么现在就可以直接双击运行该程序。如果要使现在的Release版本的程序可以在别人的计算机上运行(当然,对方的计算机也要是windows平台),那么还是需要将几个dll文件与其一起发布。
可以在桌面上新建一个文件夹,重命名为“我的第一个Qt程序”,然后将release文件夹中的helloworld.exe复制过来,再去Qt安装目录的bin目录中将mingwm10.dll、libgcc_s_dw2-1.dll、QtCore4.dll和QtGui4.dll(注意不是QtCored4.dll和QtGuid4.dll,它们是debug版本的库文件)复制过来。现在整个文件夹一共有12MB,如果使用WinRAR等打包压缩软件对它进行压缩,就只有4MB了,已经到达了可以接受的程度,这时就可以将压缩包发布出去了。
Hello World程序演示Qt项目的建立、编译、运行和发布的更多相关文章
- Android studio升级后原有项目无法正常编译运行问题
Android studio工具升级后Gradle版本问题 背景 升级AndroidStudio到最新版本后,原来可正常编译输出AndroidTest的项目无法正常编译通过. 原因 升级后的Andro ...
- 通过命令行新建qt项目,并编译打包
ref: https://blog.csdn.net/weixin_42837024/article/details/81945656 平台 :Ubuntu 18.04 QT版本 :5.9.1 ( ...
- Qt入门之基础篇 ( 二 ) :Qt项目建立、编译、运行和发布过程解析
转载请注明出处:CN_Simo. 题解: 本篇内容主讲Qt应用从创建到发布的整个过程,旨在帮助读者能够快速走进Qt的世界. 本来计划是讲解Qt源码静态编译,如此的话读者可能并不能清楚地知道为何要静态编 ...
- qt 旧项目编译运行提示 “启动程序失败,路径或者权限错误?” 原因及解决方法
qt 旧项目编译运行提示 "启动程序失败,路径或者权限错误?" 原因及解决方法 原因 Qt Creator在打开项目文件的同时会生成.pro.user文件,.pro.user文件叫 ...
- 【golang-GUI开发】Qt项目的打包发布
这是本系列的第三篇文章,前两篇我们讲了qt的安装和编译,今天我们讲一讲程序的打包. 好像我们现在都没怎么讲到qt的使用,因为想要放开手脚写代码,一些基础是要打牢的. 不过请放心,下一篇文章开始我们就会 ...
- 创建Qt项目
创建Qt项目 1 创建Qt项目 2.1 使用向导创建 打开Qt Creator 界面选择 New Project或者选择菜单栏 [文件]-[新建文件或项目]菜单项 弹出New Project对 ...
- Qt-第一个QML程序-1-项目工程的建立
这个小程序是我发的第一个完整的QMl程序,这个程序也会持续的更新,一步一步的完善起来,最后会有一个什么样的结果也是不知道,只是把自己目前掌握的QML相关的东西都慢慢的写进来,积累起来 先展示一下运行结 ...
- paip.c++ qt 项目工程互相引用的方法
paip.c++ qt 项目工程互相引用的方法 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/ ...
- QT-第一个程序 Hello QT , 以及QT creator介绍
第一个程序 - Hello QT 首先写main.cpp: #include <QApplication> #include <QMainWindow> #include &l ...
随机推荐
- android Installation error: INSTALL_FAILED_VERSION_DOWNGRADE
http://www.apkbus.com/android-114019-1-1.html 提高 AndroidManifest.xml中的manifest的android:versionCode ...
- Unity5.x shader打包AssetBundle总结
最近比较忙,好久没有更新博客了,新项目切换到unity5.x后使用了新的打包机制,在打包shader的时候遇到了一些问题,这里来记录一下吧. 在上一个项目中,我们使用unity4.7,对于shader ...
- 如何在 Xcode 中修改应用的名字
找到 TARGETS 中的 Build Setting ,下拉找到 Packaging ,修改 Product Name 即可.
- 超级账本环境搭建fabric
:gotar -C /usr/local -xzf go1.9.2.linux-amd64.tar.gz vi ~/.profile export PATH=$PATH:/usr/local/go/b ...
- C# 异步编程Task整理(一)
一.简介 .Net Framework 4.0新增了一个System.Threading.Tasks命名空间,它包含的类提供了任务的相关操作.使用任务不仅可以获得一个抽象层,还能对底层线程进行很多统一 ...
- 从零开始学C++之模板(三):缺省模板参数(借助标准模板容器实现Stack模板)、成员模板、关键字typename
一.缺省模板参数 回顾前面的文章,都是自己管理stack的内存,无论是链栈还是数组栈,能否借助标准模板容器管理呢?答案是肯定的,只需要多传一个模板参数即可,而且模板参数还可以是缺省的,如下: temp ...
- boost并发编程boost::atomic
三个用于并发编程的组件: atomic,thread,asio(用于同步和异步io操作) atomic atomic,封装了不同计算机硬件的底层操作原语,提供了跨平台的原子操作功能,解决并发竞争读 ...
- [leetcode]Reverse Linked List II @ Python
原题地址:https://oj.leetcode.com/problems/reverse-linked-list-ii/ 题意: Reverse a linked list from positio ...
- Pytorch多GPU并行处理
可以参数2017coco detection 旷视冠军MegDet: MegDet 与 Synchronized BatchNorm PyTorch-Encoding官方文档对CGBN(cross g ...
- Js组件的一些写法
首先看下Prototype里的写法: var Class = { create: function() { return function() { this.init.apply(this, argu ...