Qt里面引入頭文件的兩種方式:
1、
#include <QMdiArea>
#include<QSplashScreen>
2、
QT_BEGIN_NAMESPACE class QMdiArea; class QSplashScreen QT_END_NAMESPACE
關於QT_BEGIN_NAMESPACE 和QT_END_NAMESPACE 比較好的解釋:
比較好的解釋:
QT_BEGIN_NAMESPACE其實就是個宏,以前Qt4是沒有Qt命名空間的,后來才加上的,編譯Qt源碼時會有選項,是否將這些類放到專用的Qt命名空間內,默認是沒有的。這就出來問題了,為了統一,如果你的代碼在默認沒有Qt命名空間的SDK中編譯,那你就不用在前置聲明下面這些類的時候加上命名空間,但如果你在有Qt命名空間的SDK中編譯,那就得加上命名空間了,為了屏蔽這個差異,使得你的源碼能在這兩種情況下都進行編譯,Qt提供了QT_BEGIN_NAMESPACE宏,這樣開發者就省得自己來用程序或宏進行處理了。
class QDialogButtonBox;
class QPushButton;
class QSqlTableModel;
至於說加快編譯速度什么的,那是上述三個類的前置聲明的作用,這是與Qt無關的(也即與QT_BEGIN_NAMESPACE宏無關)。如果你在頭文件中只用到一些類的指針(而非實現),那么就可以不包含這些類的頭文件,而只使用上面形式的類型前置聲明,而在具體實現時才包含入上面這些類型的頭文件。如此,頭文件里所包含的頭文件減少了,那么使用到這個頭文件的程序就能包含更少的內容,而不是每次都包含很多頭文件,解析起來都耗時。
