欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Qt使用笔记——自定义信号槽

程序员文章站 2022-06-09 11:25:03
...

前言

在使用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);
}

Qt使用笔记——自定义信号槽
2.完整代码看上传的资源。
https://download.csdn.net/download/matt45m/12049993