QT跨线程连接信号和槽

对QT的信号和槽理解较为初级,今天通过多次尝试,终于学会了跨线程连接信号和槽。其基本方法如下。

1. 无参数传递时

(1)定义:

signal:

    void signal1();

(2)连接部分写法:

connect( p_class1,                   //类1的指针

               SIGNAL(signal1()), //类1的信号

               p_class2,                  // 类2的指针

               SLOT(slot_func2())); //类2的槽函数

(3)释放信号写法:

emit signal1();

2. 有参数传递时

(1)定义:

signal:

    void signal1(TYPE);

(2)连接部分写法:

connect( p_class1,                   //类1的指针

               SIGNAL(signal1(TYPE)), //类1的信号

               p_class2,                  // 类2的指针

               SLOT(slot_func2(TYPE))); //类2的槽函数

(3)释放信号写法:

emit signal1(type_example);

3.注意的问题

根据查阅网上资料,信号的参数和槽的参数必须符合以下两种情况之一:

(1)信号的参数和槽的参数数量相同、类型一一对应也相同。

(2)信号的参数多于槽的参数,但与槽的参数对应的信号中的参数类型应一一对应相同。

另外,QT5中关于信号和槽的绑定针对QT4有了较大改进,提供了一种新的绑定方式:

connect( p_class1,                   //类1的指针

               &CLASS1::signal1;    //类1的信号

               p_class2,                  // 类2的指针

               &CLASS2::func2;    //类2的函数

这两种方式的区别可在网上找到比较好的解释。在《QT5编程入门》(霍亚飞等编著)一书中,对QT5新提供方式的优点介绍如下:


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值