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()
{
}