有的时候我们在编写大型的窗口程序的时候,会涉及到很多复杂的操作,肯定用到定义、引用等等。我也会时不时被这些搞得头疼,今天就拿来记录梳理一下。
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "ui_mainwindow.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
public slots:
private:
signals:
private:
private slots:
};
1.
#ifndef MAINWINDOW_H
和 #define MAINWINDOW_H
: 这是防止头文件重复包含的宏定义。只有当 MAINWINDOW_H
未定义时,后续代码才会被编译。
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
2.
#include <QMainWindow>
: 包含 Qt 的主窗口类定义,使得可以继承和使用 QMainWindow
提供的功能。
#include <QMainWindow>
3.
#include "ui_mainwindow.h"
: 包含自动生成的 UI 代码,通常由 Qt Designer 生成,提供 UI 元件的接口。
#include "ui_mainwindow.h"
4.
namespace Ui { class MainWindow; }
: 声明一个名为 Ui
的命名空间,里面包含一个类 MainWindow
。这个类是用于 UI 控件的自动生成代码的。
namespace Ui {
class MainWindow;
}
5.
class MainWindow : public QMainWindow
: 定义一个名为 MainWindow
的类,继承自 QMainWindow
,表示这个类是一个主窗口。
Q_OBJECT
: 宏,用于启用 Qt 的信号和槽机制、元对象系统等功能,必须在继承自 QObject 的类中使用。
class MainWindow : public QMainWindow
{
Q_OBJECT
6.
public:
: 公有访问修饰符,后面定义的成员可以被任何对象访问。
public slots:
: 定义槽函数的部分,放在这里的槽函数可以被信号触发并在外部访问。
private:
: 私有访问修饰符,后面定义的成员只能在类内部访问。
private slots:
: 定义私有槽函数的部分,后面列出的槽函数只能在类内部被调用,并可以响应信号。
signals:
: 定义信号的部分,后面列出的信号可以在类内部发射,并供外部对象连接。