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

发布了79 篇原创文章 · 获赞 45 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/matt45m/article/details/103691353