signal-slot 信号槽技术初探二
2012-10-22 22:53
656 查看
看看 sigslot.h 的内部实现, 以比较简单的 signal1为例,它可有一个参数, 两个模板参数一个是参数类型,一个是多线程策略
重点是它的
1) connect 方法 , 将它和目的类和目的方法进行连接
2) emit 方法, 触发消息发送到槽的对应方法
.... to be continued...
重点是它的
1) connect 方法 , 将它和目的类和目的方法进行连接
2) emit 方法, 触发消息发送到槽的对应方法
template<class arg1_type, class mt_policy = SIGSLOT_DEFAULT_MT_POLICY> class signal1 : public _signal_base1<arg1_type, mt_policy> { public: typedef _signal_base1<arg1_type, mt_policy> base; typedef typename base::connections_list connections_list; using base::m_connected_slots; signal1() { ; } signal1(const signal1<arg1_type, mt_policy>& s) : _signal_base1<arg1_type, mt_policy>(s) { ; } template<class desttype> void connect(desttype* pclass, void (desttype::*pmemfun)(arg1_type)) { lock_block<mt_policy> lock(this); _connection1<desttype, arg1_type, mt_policy>* conn = new _connection1<desttype, arg1_type, mt_policy>(pclass, pmemfun); m_connected_slots.push_back(conn); pclass->signal_connect(this); } void emit(arg1_type a1) { lock_block<mt_policy> lock(this); typename connections_list::const_iterator itNext, it = m_connected_slots.begin(); typename connections_list::const_iterator itEnd = m_connected_slots.end(); while(it != itEnd) { itNext = it; ++itNext; (*it)->emit(a1); it = itNext; } } void operator()(arg1_type a1) { lock_block<mt_policy> lock(this); typename connections_list::const_iterator itNext, it = m_connected_slots.begin(); typename connections_list::const_iterator itEnd = m_connected_slots.end(); while(it != itEnd) { itNext = it; ++itNext; (*it)->emit(a1); it = itNext; } } };
.... to be continued...
相关文章推荐
- signal-slot 信号槽技术初探一
- Qt 初探信号与槽(signal & slot)
- 信号(Signal)与槽(Slot)-Qt中的典型机制
- signal-slot 信号/槽(也译信号/插槽)机制
- Qt学习(三) QT信号:(signal)和QT槽:(slot)
- 信号和槽机制(Signal & Slot)
- 一起看代码来玩玩QT之09 Signal and SLOT ( 信号和槽)
- 详解 Qt 线程间共享数据(使用signal/slot传递数据,线程间传递信号会立刻返回,但也可通过connect改变)
- QT信号(signal)和槽(slot)应注意的问题
- 信号(SIGNAL)与槽(SLOT)
- 信号(Signal)与槽(Slot)-Qt中的典型机制
- 信号(Signal)与槽(Slot)-Qt中的典型机制
- QT信号(SIGNAL)与槽(SLOT)
- Qt的信号(signal)和槽(slot)机制(讲解很到位)
- 信号(Signal)与槽(Slot)-对象之间的一种高效通信接口
- Qt:QML:QML于C++交互之信号与槽(signal&slot )
- PyQt之玩转signal(信号)与slot(槽)一:介绍及简单实例
- Qt信号与槽机制(signal & slot)
- 在QThread中使用信号(SIGNAL)-槽(SLOT)
- qt信号signal和槽slot机制