sigslot 库与QT的信号槽一样,通过发送信号,触发槽函数,信号槽不是QT的专利,早在2002年国外的一小哥用C++写了sigslot 库,简单易用;
该库的官网(喜欢阅读的小伙伴可以仔细研究):http://sigslot.sourceforge.net
sigslot 库就是两个文件,下面这里下载
通过百度网盘分享的文件:sigslot 库
链接:https://pan.baidu.com/s/12N8_ziZfN8_FME4W8akueA?pwd=arg0
提取码:arg0
下面是测试代码样例
/*
sigslot 库的使用,该库是纯C++实现信号与槽的操作
把sigslot 库的两个文件放在代码同级目录即可*/#include <iostream>
#include "sigslot.h"using namespace sigslot;//sigslot库空间引入进来//自定义的类,里面有两个信号
class Windows {
public:signal0<> Sig_LButtonClicked;//信号signal1 <int> sig_paint;};//自定义的类,里面有槽函数,在定义的时候需注意继承public has_slots<>
class WindowsHandler :public has_slots<>
{
public:void onLButtonClicked(){printf("L Button clicked\n");}void onPaint(int value){printf("value = %d\n", value);}
};int main()
{Windows w;WindowsHandler handler;w.Sig_LButtonClicked.connect(&handler, &WindowsHandler::onLButtonClicked);//创建信号槽w.sig_paint.connect(&handler, &WindowsHandler::onPaint);//创建信号槽//发送信号w.Sig_LButtonClicked();w.sig_paint(100);return 0;
}