先来看一段程序:
#ifndef WINDOW_H #define WINDOW_H #include <QWidget> QT_BEGIN_NAMESPACE//要注意的地方 class QAbstractItemModel; class QCheckBox; class QComboBox; class QDateEdit; class QGroupBox; class QLabel; class QLineEdit; class QTreeView; QT_END_NAMESPACE////要注意的地方 class MySortFilterProxyModel; //! [0] class Window : public QWidget { Q_OBJECT public: Window(); void setSourceModel(QAbstractItemModel *model); private slots: void textFilterChanged(); void dateFilterChanged(); private: . . . . //code end
class QAction;
class QCheckBox;
...
是因为在头文件里面只有这些类的指针申明,并没有真正实例化,在这个头文件对应的cpp文件里面应该会
#include <...>
#include <...>
...
在cpp文件里面才会正真实例化这些类。
其 实直接在头文件里面#include #include也是可以的
像这样做,好像是可以降低各个文件编译时的关联度,不会在改动了一下部分类的时候,引发其他大量文件的重新编译,在做小工程的时候没什么区别,但是做大了,编译一次需要好几个小时的时候,这样做的优势就显现出来了