1 Star 1 Fork 13

Flying / CQSlot

forked from dqsjqian / CQSlot 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

CQSlot

介绍

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();
}
MIT License Copyright (c) 2020 dqsjqian Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

这是一个很棒的跨平台线程安全的C++信号槽,使用方法如同Qt里的信号槽,甚至更简单 展开 收起
C++
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C++
1
https://gitee.com/mFlying/CQSlot.git
git@gitee.com:mFlying/CQSlot.git
mFlying
CQSlot
CQSlot
master

搜索帮助