代码拉取完成,页面将自动刷新
同步操作将从 dqsjqian/CQSlot 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
C++信号槽独立库
特点:
1、采用现代C++17标准库实现,向下兼容11/14标准,向上兼容21标准,时尚不落伍
2、模块独立性非常好,直接include头文件即可
3、该框架库天生带有线程安全的特性,使用者不必考虑多线程问题
4、跨平台,无论什么平台都支持(前提:支持C++11编译)
5、封装了线程、定时器、日志等实用模块,定义了大量使用便捷的宏
6、大量使用C++模板、泛型编程,遵循C++面向对象思想,代码风格极简
完整案例可以参考main.cpp
int main()
{
// 定义一个独立的线程对象,后面可能用得上
CQSLOT::CQThread th;
// 定义完就启动
th.start();
// 测试类1,我们让它跑在独立线程上
Test1 test1;
// 这里意思是我希望我的目标槽函数在独立线程中跑,而不是在主线程中执行
test1.moveToThread(&th);
// 测试类2,我们让它直接在主线程上跑
Test2 test2;
// 定义一个线程信号类,其实不定义也可以,为了演示而已,直接用CQ_EMIT发射信号也可
ThreadTest tt;
//把一个信号对象(用CQ_SIGNAL进行定义)绑定到目标槽函数,可以绑n个,它们是“m -- n”的对应关系,非常灵活
CQ_CONNECT(tt.m_addSignal, &test1, &Test1::add);
CQ_CONNECT(tt.m_addSignal, &test2, &Test2::reduce);
// 启动线程,这个线程内部会立即发射信号,信号会立即触发上面connect连接的槽函数
tt.start();
// 演示2,定时器类,定时器定时结束就会发射信号
CQSLOT::CQTimer timer;
// 把定时器“定时结束”的信号绑定后面的函数,跟上面一样,“m -- n”的对应关系
CQ_CONNECT(timer.timeout, &test1, &Test1::timeOut);
CQ_CONNECT(timer.timeout, &test2, &Test2::timeOut);
// 定时器开始计时
timer.start(5000);
// 开启事件循环
return CQ_EXEC();
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。