我们创建了新的工程后,我们可以得到下图的工程;
1.首先我们分析工程配置文件,pro文件是用脚本语言(参考shell)写的。
#添加qt的三大模块:core gui widgets
qt+ = core gui widgets;
core :核心模块 提高信号与槽以及事件。。。
gui: 界面模块
widgets:窗口模块
CONFIG += c++11: //用c++11来进行编译
SOURCES += \
main.cpp \
mainwindow.cpp //添加源文件
HEADERS += \
mainwindow.h //添加头文件
FORMS += \
mainwindow.ui // 添加界面设计文件
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
//上面这段,当编译时,会自动到这些路径下找开发工具
2.头文件分析
class MainWindow : public QMainWindow //定义mainwindow类 它继承qmainwindow
{
Q_OBJECT //qt中信号与槽的宏定义
public:
MainWindow(QWidget *parent = nullptr); //构造函数
~MainWindow(); //析造函数
private:
Ui::MainWindow *ui; //定义一个ui窗体
};
3. 源文件分析
#include "mainwindow.h" //添加头文件
#include <QApplication> //添加qt应用类
int main(int argc, char *argv[]) //主函数
{
QApplication a(argc, argv); // 创建qt应用对象 这个必须的以下的步骤都是在这 个应用对象实现的。
MainWindow w; //在应用中创建一个窗口
w.show(); //窗口显示
return a.exec(); // 执行应用,一直轮询这个应用。
}
4.窗体源文件分析
#include "mainwindow.h" //添加头文件
#include "ui_mainwindow.h" //ui_mainwindow.h是界面设计头文件,不需要用户去 管,自动生成的。
MainWindow::MainWindow(QWidget *parent) //构造函数
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this); //调用界面设计函数setupUi()
}
MainWindow::~MainWindow()
{ ui(new Ui::MainWindow)
delete ui; //ui是一个野指针,在构造函数中我们为这个指针申请了一 块内存,现在需要释放它。
}