Qt自定义信号槽

前言

在使用Qt开发中,有时候在两个线程之间进行数据的传输,比如使用一个线程往另一个线程传输一个OpenCV的Mat数据或者一个Rect的坐标,那么最好是自已定义一个信号,然后在另一个线程定义一个槽来接收这个信号。

一.信号与槽

1.在Qt里面定义的信号是以函数形式声明的,返回类型是void,传入的参数为要发送出去的数据,前面有signals关键字标记。

signals:
    void getStr(QString &str);//定义一个可以发送str的信号

2.信号槽继承于QObject类,头文件中必须有Q_OBJECT的类声明,否则会报错。
3.槽函数跟Qt正常的槽函数一样,可以用 public、private、protected 修饰,槽的参数不能有缺省值。
4.发射击信号(emit)是在程序要传出数据的位置使用。

emit get(str);//把str发射出去

5.信号和槽是一种松耦合机制,也可以说是一种分布式机制,信号广播出去,槽自然会订阅接收。
6.如果一个信号与多个槽相关连的话,那么,当这个信号被发射时,与之相关的槽被激活的顺序是随机的。

二、代码

1.发射信号代码

void Dialog::on_emitBtn_clicked()
{
    QString str = ui->EmitLineEdit->text();
    emit getStr(str);
}

在这里插入图片描述
2.完整代码看上传的资源。
https://download.csdn.net/download/matt45m/12049993

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知来者逆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值