一、QT的介绍
QT是一种跨平台C++图形用户界面应用程序开发框架,可以类比于手机的Android和IOS,他们也同样,08年诺基亚收购开发QT的公司,当时的诺基亚手机界面就是由QT编写的,在汽车中控屏幕中也使用QT进行显示。
二、QT的安装
1.在QT5.15版本以后都为开源,安装较为复杂,我们使用在线安装
进入网站Index of /official_releases/online_installers (qt.io)选择对应版本下载即可。
2.创建账号后点击下一步即可

3.选择安装目录

4.选择组件

其余步骤点击下一步即可
等待下载完毕,就安装完成了。

三、QT的编译过程
Qt Creator采用界面和逻辑相分离,图形化设计界面,操作简单,清晰。
但是我们先可以用记事本编写,体会编译的整个过程。
创建一个如下图的windows运行窗口

1.准备代码
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
return app.exec(); //app.exec()保持程序运行
}
新建各个控件的类
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
QLabel *infoLabel = new QLabel;
QLabel *openLabel = new Qlabel;
QLineEdit *cmdLineEdit = new QLineEdit;
QPushButton *commitButton = new QPushButton;
QPushButton *cancelButton = new QPushButton;
QPushButton *browseButton = new QPushButton;
为控件添加文字
infoLabel ->setText("input cmd:");
openLabel ->setText("open");
commitButton ->setText("commit");
cancelButton ->setText("cancel");
browseButton ->setText("browse");
创建布局控件,并设置内容
#include <QHBoxLayout>
#include <QVBoxLayout>
QHBoxLayout *cmdLayout = new QHBoxLayout;
cmdLayout->addWidget(openLabel);
cmdLayout->addWidget(cmdLineEdit);
QHBoxLayout *buttonLayout = new QHBoxLayout;
buttonLayout->addWidget(commitButton);
buttonLayout->addWidget(cancelButton);
buttonLayout->addWidget(browseButton);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addwidget(infoLabel);
mainLayout->addLayout(cmdLayout);
mainLayout->addLayout(buttonLayout);
创建显示界面
#include <QWidget>
QWidget w;
w.setLayout(mainLayout);
w.show();
全部代码
#include <QApplication>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QWidget>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel *infoLabel = new QLabel;
QLabel *openLabel = new Qlabel;
QLineEdit *cmdLineEdit = new QLineEdit;
QPushButton *commitButton = new QPushButton;
QPushButton *cancelButton = new QPushButton;
QPushButton *browseButton = new QPushButton;
infoLabel ->setText("input cmd:");
openLabel ->setText("open");
commitButton ->setText("commit");
cancelButton ->setText("cancel");
browseButton ->setText("browse");
QHBoxLayout *cmdLayout = new QHBoxLayout;
cmdLayout->addWidget(openLabel);
cmdLayout->addWidget(cmdLineEdit);
QHBoxLayout *buttonLayout = new QHBoxLayout;
buttonLayout->addWidget(commitButton);
buttonLayout->addWidget(cancelButton);
buttonLayout->addWidget(browseButton);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addwidget(infoLabel);
mainLayout->addLayout(cmdLayout);
mainLayout->addLayout(buttonLayout);
QWidget w;
w.setLayout(mainLayout);
w.show();
return app.exec();
}
2.项目创建及编译
1)打开Qt自带的命令行窗口

2)进入刚才编写的代码路径中,使用qmake -project生成工程文件,结果如下图所示

3)以记事本打开工程文件,并添加QT +=widegts gui
PS:在运行过程中出现了错误

4)再次输入命令qmake
使用mingw32-make生成exe
编译14和36行出现错误

更正后重新编译,运行仍未成功,运行时出现各种文件缺失。
删除相关文件重新运行,出现Project ERROR: Cannot run compiler 'cl'. Output:的问题,添加相关环境变量,重启电脑后未出现
运行成功!

四、Qt Creator的使用
项目的创建
1.创建项目的步骤,单击创建,这里选择默认的窗口程序

2.设定名称和路径
3.构建体系,选择qmake

4.选择类型,MainWindow是带菜单的窗口,Widget是不带菜单的

5.选择编译器,任选,其他点下一步即可
图形化设计
双击界面文件,即可进入图形设计界面

和华为云平台的cube魔方表单类似,都是通过拖拽进行编辑
放置各类控件,并调整命名和显示文字


单击左下角运行按钮,结果如下:

五、信号和槽
在界面中点击为信号,接受信号为槽
按钮的使用
在确认按键下编写如下代码

单击运行后,输入notepad,单击确认,可以打开记事本

能打开大部分在windows/ststem32中的文件
控件与键盘链接
通过在connect()函数把槽和信号连接,是两者产生关系
connect()有四个参数,谁发出信号,发出信号类型,谁处理信号,如何处理

用enter结束,运行结果同上