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;
}
}

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学习:QLabel的用法及其程序示例🔍
Qt文档译:QLabel🔍
Qt 之 QLabel🔍
QApplication的用法🔍
QApplication详解🔍
QApplication成员列表🔍
Qlabel成员列表🔍
这篇博客介绍了在VS中使用QT创建GUI界面的方法,包括使用QT Designer进行可视化创建和手动创建。还详细讲解了QT项目中控制台的调用输出问题及解决方案,并探讨了QApplication和QLabel类的使用。最后,讨论了QT应用程序的打包和发布过程,强调了在不同设备上运行的注意事项。

1078

被折叠的 条评论
为什么被折叠?



