Qt 里经常见 #include <QXXX>
和 class QXXX
。前者是包含头文件,头文件中一般来说包含了 QXXX 类的定义,编译代码时预处理器要做 include 头文件的步骤;后者是类的前置声明,如果当前代码文件根本用不到 QXXX 的接口,只需要知道有 QXXX 这个类的存在,那么前置声明该类即可,编译速度也能得到提升。举两个示例:
- mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
class QLabel; // 前置声明
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
QLabel *mLabel;
};
#endif // MAINWINDOW_H
- mainwindow.cpp
#include "mainwindow.h"
#include <QLabel> // 包含头文件
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent),
, mLabel(new QLabel)
{
mLabel->setParent(this);
mLabel->setText("hello world");
}
MainWindow::~MainWindow()
{
}