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

  
    

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 me1237guy 的頭像
    me1237guy

    天天向上

    me1237guy 發表在 痞客邦 留言(0) 人氣()