對於一個剛剛接觸include寫法的童鞋來講, spa
忽然看到不少人用以下寫法:不知甚解否? code
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
//! [前置聲明]
QT_BEGIN_NAMESPACE
class QPushButton;
class QLabel;
class QLineEdit;
QT_END_NAMESPACE
//! [前置聲明]
class Dialog:public QDialog
{ Q_OBJECT public:
Dialog();
~Dialog();
};
#endif // DIALOG_H
這裏記錄下本身對此的探究過程: 繼承
一樣的Qt其餘例子程序以及其餘內置類,你慢慢看都會找到相似的不少「前置聲明」寫法, it
那麼,重點來了: io
在Qt裏就是以下的一種寫法: 編譯
//! [前置聲明] QT_BEGIN_NAMESPACE class QPushButton; //隨便你 class QLabel; //仍是隨便你 class QLineEdit; //就是隨便你 QT_END_NAMESPACE //! [前置聲明]
Qt裏中的控件類QPushButton、QLabel等等都是必定、確定、保證定義好而且可使用的, class
那麼咱們就能夠直接用前置聲明來寫,由於這些控件類不須要咱們去操心,確定能用。 引用
而什麼狀況下不適合用呢? 程序
好比自定義了一個類繼承QDialog,那麼QDialog最好用不要用前置聲明,而建議用include。 im
再次聲明:本篇徹底是我的理解方式、錯誤不免,忘指正。