- 打开 Qt Creator,选择文件

- 选择新建项目或文件后:Application:应用程序(使用Qt写一个GUI程序就应该选择这个)

- 选择路径,可以勾选上设为默认的项目路径

- 选择qmake,Qt 框架会在编译的时候,自动调用一些列的生成工具,基于你自己写的代码,生成一系列的其它的 C++ 代码,最终编译的代码,也是最后生成的这些代码

- 选择第二个,Base class:使用 Qt Creator 创建项目,会自动的生成一些代码出来。生成的代码就包含一个类,此处就是要选择这个自动生成的类的父类是谁,Qt 中内置的类都是以 Q 为前缀开头的!!

- QMainWindows:表示一个完整的程序窗口,包含菜单栏,工具栏,状态栏......
- QWidget:表示一个控件(窗口上的一个具体的元素,输入框,按钮,下拉框,安萱按钮,复选按钮......)
- QDialog:表示一个对话框
- form file 非常关键

Qt 中创建图形化界面的程序,有两种方式:
- 直接通过C++代码的方式创建界面
- 通过form file,以图形化的方式来生成界面
此时,就可以使用 Dt Designer 或者 Qt Creator 来编辑这个ui文件,从而以图形化的方式快速方便的生成图形化界面
- 选择翻译文件(对应的语言),暂时不用关注,和国际化相关的

- 选择一下基于哪个编译器的 Qt SDK 来构建后续代码

- 要将代码上传到git上就选择第二个,否则就第一个

- 点击完成此时就创建好了,点击左侧的运行按钮即可

- 运行结果已经出来了,就是一个空白的界面,因为我们什么也没写

- 代码解释
- main函数
cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[]) //main函数的形参就是命令行参数
{
QApplication a(argc, argv); //编写一个Qt的图形化界面程序,一定要有 QApplication 对象!!!
Widget w; // Widget 就是刚才创建项目时,默认生成的类名(自己也可以改,但是不推荐),创建一个控件对象
w.show(); //让控件显示出来 .hide()方法让控件隐藏,都是Widget的父类QWidget提供的
return a.exec(); //exec()就是让程序执行起来,跑起来。和linux中的exec进程程序替换不一样
}
- Widget的声明
cpp
// Widget.h
#ifndef WIDGET_H
#define WIDGET_H
//以上便是对Widget类的声明,推荐写完#pragma once
#include <QWidget> //父类所对应的头文件
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget //QWidget,创建项目时,选择的父类,Qt SDK内置的,使用该类就要包含对应的头文件
{
Q_OBJECT //Qt内置的宏,本质上是文本替换,展开之后,会生成一大堆的代码。如果某个类想使用 "信号和槽" 就需要引入这个宏
public:
Widget(QWidget *parent = nullptr); //构造,QWidget *parent = nullptr:Qt中引入了"对象树"机制,创建Qt的对象,就可以把这个对象给挂到对象数上。往树上挂的时候就需要指定"父节点",对象树就是一个普通的 N 叉树 不是二叉
~Widget(); //析构
private:
Ui::Widget *ui; //跟 form file密切相关
};
#endif // WIDGET_H
- Widget的定义
cpp
// widget.cpp
#include "widget.h"
#include "ui_widget.h" //form file 被 qmake生成的头文件
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget) //
{ //把form file 生成的界面和当前widget 关联起来
ui->setupUi(this); //
} //
Widget::~Widget()
{
delete ui;
}
- 关键要点,form file!!!

直接双击 .ui 文件,此时Qt Creator 就会调用 Qt Designer,打开ui文件,图形化的界面编辑器

点击一下左侧的编辑,就是ui文件的原本的样貌,这个格式就是 xml 格式,和html 相似,有成对的标签也有单标签

xml 这里的标签,有哪些含义,都表示声明含义,是由Qt大佬们自定义的,具体是什么含义不需要关注,而html中的标签是固定的。
Qt 中使用的xml文件就是去描述程序的界面是啥样的,进一步通过 qmake 会调用相关的工具,依据这个xml文件生成一些 C++ 代码,从而把完整的界面构造出来
- 左侧还有一个Empty.pro的文件
.pro 是Qt项目的工程文件,也是 qmake 工具构建时候的重要依据

.pro 类似于之前 Linux中的 Makefile文件,qmake 搭配 .pro 起到的作用就和 Makefile 是类似的。Qt Creator 把这个过程中编译的细节都封装好,不需要过多的关注,著需要点击 运行 按钮就行了,就直接编译运行了
- 打开文件资源管理器,看看项目对应的目录是什么样子的


往上一级目录可以看到还有一个目录,再运行一次程序之后,就会在 项目目录 并列的地方,多出来一个"build-xxxxxxxxxx"目录,这个目录里面就是该项目运行过程中,生成的一些临时文件

"build-xxxxxxxxxx"目录里面的文件:

- Makefile:编译 Qt程序,还是会用到 makefile ,只不过 makefile 不需要我们自己手动写了,而是qmake自动生成
- **ui_widget.h:就是 widget.ui xml 生成的 .h 文件!!!**在 widget.cpp 中就包含此头文件 #include "ui_widget.h"

- debug目录下的.exe程序就是最终生成的程序,双击:

