对于一个刚刚接触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
再次声明:本篇彻底是我的理解方式、错误不免,忘指正。