QT VS中项目的创建以及程序的打包发布

这篇博客介绍了在VS中使用QT创建GUI界面的方法,包括使用QT Designer进行可视化创建和手动创建。还详细讲解了QT项目中控制台的调用输出问题及解决方案,并探讨了QApplication和QLabel类的使用。最后,讨论了QT应用程序的打包和发布过程,强调了在不同设备上运行的注意事项。

QT GUI 界面

先前我们一直使用的控制台程序(即黑色边框的程序界面)

使用QT,我们便可以实现一些图形化用户界面控制台界面,即GUI(Graphic User Interface),图形化用户界面使用户通过窗口界面与程序打交道,例如按钮、文本框、菜单等等…

在QT中创建一个GUI界面共有两种方式:

1.使用QT Designer设计器进行可视化创建
这种方式是我们将来使用的方式,直观、高效、一般用于项目开发

2.手动进行创建
这种方式是我们在初学阶段,为了更好的理解相关原理而采用的方式


使用QT Designer设计器进行可视化创建

使用VS+QTWidgets模板 创建一个标准窗口程序
首先需要创建一个标准的QTWidgets模板 : 创建一个标准的QTWidgets模板 🚀

在这里插入图片描述
在这里插入图片描述


使用手动创建

注意:手动创建图形化界面这种方式是我们在初学阶段,为了更好的理解相关程序原理而采用的方式,其在项目开发的过程中并不常用.

如果我们使用来QT工程中的源文件中手动编写代码的方式来创建QT项目的可视化窗口,我们可以将QT项目内所有的文件删除,仅在源文件夹中新建一个名为.cpp的源文件,其用于创建QT项目的可视化窗口

删除所有文件:
在这里插入图片描述

新建一个源文件:
在这里插入图片描述
在源文件HELLOWQT.cpp文件中键入以下代码:
在这里插入图片描述
运行结果:
在这里插入图片描述


QT项目中控制台的调用输出:

由于在使用VS开发QT应用程序时出现 cout 指令无法输出的情况,并且控制台也没有被调用的情况,解决方案为:
在这里插入图片描述
至此,我们就能正常调用控制台程序,输出cout语句中的内容了(记得要导入iostream头文件和using namespace std命名空间)

在这里插入图片描述


代码分析:

头文件的引入:

🔥引入对应的头文件,在Qt中,头文件设计的非常规范,大部分情况下一个类对应一个头文件,
类名和头文件名相同,以字母[Q]开头,一个控件对应一个类,要想使用控件,必须包含对应的头文件.

#include <QtWidgets/QApplication> //标明 [QApplication]这个C++系统标准库头文件, 此库文件用于GUI应用程序的控制流的管理和主要设置		
#include <QtWidgets/Qlabel.h> //标明 [Qlabel.h]非标准文件, 此库文件用于定义是QT界面中的标签类

Qt程序的入口函数:

🔥构建Qt程序的入口函数,其和C++控制台程序一样,都是main()函数,下方我们建立一个 带有参数形式 的入口函数

C++规定带参数的main函数的参数只能有两个,习惯上这两个参数写为argc和argv,且规定其argc(第一个形参)必须是[整型变量],argv( 第二个形参)必须是[指向字符串的指针数组]

🌟argc : 用于统计运行程序时DOS命令行中发送给main函数的命令行参数的个数
🌟argv数组: 用来存放指向你的字符串参数的指针数组(即存放了从外部输入到main函数中的数据)

由于main函数不能被其它函数调用,因此不可能在程序内部取得实际值,其实际值只能从操作系统命令行上获得.所以我们还需要使用DOS命令行向main函数中导入实际值.

🔥首先打印argc和argv的实际参数
int main(int argc,char *argv[])
{
	cout << "用于统计参数个数的int类型的argc的值为 :  " << argc << endl;
	while (argc)
	{
		cout << "存放输入参数的argv的第 :  " << argc << "个" << "元素的值为" << argv[--argc]<< endl;
	}
}

在这里插入图片描述

详见:
C++ 带参数的main函数🚀
C++ 使用命令行编译程序🚀

Qt工程代码:

int main(int argc,char *argv[])
{
	
	QApplication a(argc, argv); 
	🔥/*构造一个名为"a"的QApplication类对象,任何一个QTwidgets程序都需要包含一个QApplication
	应用对象,该对象用于管理GUI应用程序的控制流和主要设置,资源,事件等,其有主要的重载形式两个传入参
	数[int&类型的argc]和[char**类型的argv]*/
	此时构建了一个QApplication类对象,此程序中其用于输出QTwidgets程序以显示下方制作的标签

	QLabel label("HELLOWWORLD\n");//创建一个部件
	🔥/*构造一个名为"label"的QLabel类标签控件对象,QLabel类对象仅提供了一个文本或图像的显示,其
	没有提供用户交互功能,且此处仅使用其类构造器的默认构造参数显示一个文本类型的标签*/
	构建了一个默认的文本标签label

	label.show(); //显示创建的部件
	🔥/*使用show函数显示名为"label"标签小部件,此时show()函数默认显示的是一个非模态的对话框
	(即在弹出窗口的时候,整个程序就被锁定了,处于等待状态,直到对话框被关闭)*/
	使用上方文本标签对象的.show()方法显示此标签部件,其为非模态对话框

	return a.exec();
	/*🔥进入事件主循环,此语句用于等待消息的循环,其一般存在于函数的最后一行用来作为返回使用
	exec()的作用跟系统处理有关,之前main函数传入的两个参数直接被qt的QApplication的a对象中
	的形参接收,此时main函数的控制权便交给了QT,接下来QT定义了一个Label标签类的label部件对象
	并调用了自身的.show()函数进行了部件显示,最后在程序尾部定义一个exec()函数的返回语句,此时
	程序就会一直等待用户和系统发出的信息,获取信息后进行返回处理,当QT应用程序退出时(比如调用
	exit()函数,此案例中返回条件为对话框关闭),exec()函数的值便会返回,程序才会停止,否则程序将
	一直,即处于一个循环等待事件的状态,即只有用户按下关闭对话框键,程序才会退出,即此语句起到了
	程序持续循环.exec()函数的返回值: 其将返回"程序文件所处的全路径"和一个"0"*/
	

QApplication类

QApplication类用于管理图形用户界面应用程序的控制流和主要设置,QApplication是Qt的整个后台管理的命脉,它包含主事件循环,其用于处理来自窗口系统和其它资源的所有事件被处理和调度,由于重载函数中的两个形参为main函数中的外部传入参数,所以其可以处理应用程序的初始化收尾工作,并且提供对话管理,它也处理绝大多数系统范围和应用程序范围的设置

对于用Qt编写的任何一个GUI应用,不管这个应用有无窗口和窗口的多少,程序中只能只能有一个QApplication类对象

QApplication类有两种重载方式:

QApplication (int &, char **)
~QApplication ()

QLabel类

QLabel类主要用于文本和图像的显示,其没有提供用户交互功能.QLabel对象的视觉外观可以由用户自定义配置,它还可以为另外一个可获得焦点的控件作为焦点助力器(即其可以链接许多的界面类型),QLabel就像一个空节点(万金油),具体要显示什么类型,由自己给定,例如:文字,图片,动画,超链接等等

QLabel 类有三种重载方式:

QLabel (QWidget *, Qt::WindowFlags )
QLabel (const QString &, QWidget *, Qt::WindowFlags )
~QLabel ()

其主要成员类型:

void setText(QString)设置label框内的文本.
void hide()隐藏label框.
void setBuddy(QWidget*)把另一个部件设为label框的伙伴,方便快捷使用.
void clear()清空label框内所有内容.
void setPixmap(QPixmap(QString))设置图片.
void setMovie(QMovie*)设置电影.
void setScaledContents(bool)设置是否按比例填充满整个label框(非常重要)
void setToolTip(QString)设置信息提示,鼠标放在label框上面会自动跳出文字.
void setToolTipDuration(int)设置信息提示的持续时间,单位是毫秒.
void setAlignment(Qt::Alignment)设置label框的对齐格式.
void setStyleSheet(QString)设置label框的样式.


QT应用程序的打包和发布

首先我们找到此项目文件生成的exe文件并试图将其打开:

在这里插入图片描述
在这里插入图片描述

由上可见,直接对QT工程文件生成的.exe文件进行打开操作,将无法正常打开,此时有两种情况和两种解决办法:

在本设备上运行可执行文件:

若我们想在自己的设备上运行源文件生成的可执行文件,我们需要在设备的Path环境变量中添加Qt存放dll文件的目录路径,本设备存放dll文件的路径为: D:\QT\5.9\msvc2017_64\bin,找到这个目录后,我们需要将其添加到系统属性-环境变量-用户变量-Path变量中,即:

在这里插入图片描述
此时便可以打开并运行创建一个标准窗口程序.exe这个可执行文件

在这里插入图片描述


在陌生设备上运行可执行文件:

若我们需要在陌生设备上运行.exe可执行文件,我们需要打包发布应用程序,本文中不进行详细解释,在QT 程序的打包和发布🚀一文中进行详细解释.


qt中main函数中的exec()作用总结🔍

Qt学习:QLabel的用法及其程序示例🔍
Qt文档译:QLabel🔍
Qt 之 QLabel🔍

QApplication的用法🔍
QApplication详解🔍
QApplication成员列表🔍
Qlabel成员列表🔍

分析第一个Qt程序代码🔍

C语言main()函数详解🔍
带参数的main()函数用法详解🔍
Main函数参数argc,argv说明🔍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值