因為 Qt使用元物件系統對C++進行了擴充套件,主要包括訊號-槽機制和內省機制。以用來支援Qt的訊號槽連線,QObject的元資訊,屬性,國際化翻譯等操作。
如下列原始碼中的 Q_OBJECT, signals, slots等。
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
signals:
void update();
public slots:
void onButtonClicked();
private:
Ui::MainWindow *ui;
};
這些非標準 C++的語法,需要使用 qmake, moc 預處理,生成標準 C++ 原始碼之後使用 C++編譯器進行編譯,所以我們在 QtCreator 中編譯會覺得比較慢,可以透過檢視編譯後的moc_xxxx.cpp 檔案檢視生成後的 C++ 原始碼檔案看到這些實際工作是如何進行的。
因為 Qt使用元物件系統對C++進行了擴充套件,主要包括訊號-槽機制和內省機制。以用來支援Qt的訊號槽連線,QObject的元資訊,屬性,國際化翻譯等操作。
如下列原始碼中的 Q_OBJECT, signals, slots等。
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
signals:
void update();
public slots:
void onButtonClicked();
private:
Ui::MainWindow *ui;
};
這些非標準 C++的語法,需要使用 qmake, moc 預處理,生成標準 C++ 原始碼之後使用 C++編譯器進行編譯,所以我們在 QtCreator 中編譯會覺得比較慢,可以透過檢視編譯後的moc_xxxx.cpp 檔案檢視生成後的 C++ 原始碼檔案看到這些實際工作是如何進行的。