回调函数实现类似QT中信号机制

1. 定义回调接口类:

[cpp] view plain copy
 
  1. class UIcallBack  
  2. {  
  3. public:  
  4.     virtual void onAppActivated() = 0;  
  5.     virtual void onShowMore() = 0;  
  6. };  


2. 定义一个类 继承 回调接口类,并包含你要监听的类

[cpp] view plain copy
 
  1. class AppManager : public UIcallBack  
  2. {  
  3. public:  
  4.     AppManager();  
  5.   
  6.     UIManager uiManager;  
  7. ……  
[cpp] view plain copy
 
  1. uiManager.setCallBack(this);  



[cpp] view plain copy
 
  1. void AppManager::onAppActivated()  
  2. {  
  3.   
  4. }  
  5.   
  6. void AppManager::onShowMore()  
  7. {  
  8.     _D("callback onshowMore ");  
  9. }  


3. 要监听的类实现

[cpp] view plain copy
 
  1. class UIManager   
  2. {  
  3. public:  
  4.     UIManager();  
  5.     ~UIManager();  
  6.   
  7.     void setCallBack(UIcallBack *pcallBack)  
  8.     {  
  9.         m_pcallBack = pcallBack;  
  10.     }  
  11.   
  12.     UIcallBack *m_pcallBack;  
  13. };  

在 UIManager里调用

[cpp] view plain copy
 
  1. m_pcallBack->onShowMore();  

则在AppManager类里就能响应到onShowMore()这个消息

------------

2017-10-02 应一位回复此博客的朋友要求,总结另一篇有关QT信号与槽机制的简单实现原理,可参考另一篇博客:

http://blog.csdn.net/liukang325/article/details/78151601

http://blog.csdn.net/liukang325/article/details/45742675

原文地址:https://www.cnblogs.com/findumars/p/7701630.html