7 Star 18 Fork 4

dqsjqian / CQSlot

Create your Gitee Account
Explore and code with more than 5 million developers,Free private repositories !:)
Sign up
Clone or download
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README.md

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();
}

Comments ( 0 )

Sign in for post a comment

About

这是一个很棒的跨平台线程安全的C++信号槽,使用方法如同Qt里的信号槽,甚至更简单 spread retract
C++ and 2 more languages
MIT
Cancel

Releases (1)

All

Gitee Metrics

Contributors

All

Activities

load more
can not load any more
C++
1
https://git.oschina.net/dqsjqian/CQSlot.git
git@git.oschina.net:dqsjqian/CQSlot.git
dqsjqian
CQSlot
CQSlot
master

Search

152606 8668e384 1899542 133635 2cd7d36e 1899542