回调函数实现类似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\n");  
  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

posted @ 2017-10-20 21:08  findumars  Views(1027)  Comments(0Edit  收藏  举报