纯C++信号槽使用Demo (sigslot 库使用)
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;
}