close
加入一個繼承Object的新類別Test,
#ifndef TEST_H
#define TEST_H
#include <QObject>
classTest:publicQObject
{
Q_OBJECT
public:
explicitTest(QObject*parent=nullptr);
signals:
};
#endif // TEST_H
其中Test創建子可以輸入一個參數parent,當parent消失時,
則該類別的實體也會跟著消失,方便記憶體管理。
透過下面的圖片說明,Object1可以發射(emit)signal1訊息,Object2的兩個slots(包含slot1和slot2)可以接受該訊息通知。
此外,Object1亦可以發出signal2訊息,Object4的slot1可以接收該訊息,以此類推。
---------------------------------------------------------------------------------------
功能: 撰寫一個cmd,利用cmd啟動obj1和obj2,最後利用cmd停止obj1和obj2
在test.h
在test.cpp實作
在main.cpp
----------------------------------------------------------------------------------------
今天Review code發現上面兩個signal忘了加入emit的關鍵字,雖然可以運作,
加上emit關鍵字warning提示就會消失
由於Test類別繼承QObject,因此在編譯期間
MOC會根據test.h自動生成一個Meta Object原始碼
先前自訂義的signal和slot可以在下面生成的原始碼看到相關的關鍵字
MOC其運作流程如下
MOC(Meta Object Compiler)讓一般人可以在QT下輕易撰寫C/C++事件和回呼函式,
換句話說,Qt將最複雜的事件註冊交由MOC自動生成,這真是太棒了
參考
Qt 6 - Episode 4 - QObject and Moc
全站熱搜
留言列表