QT线程 Emit、Sgnals、Slot详细解释

本文详细的介绍了QT中如何发送信号、如何接收信号。Emit、Sgnals、Slot的具体使用方法。信号和槽机制是 QT 的核心机制,要精通 QT 编程就必须对信号和槽有所了解。信号和槽是一种高级接口,应用于对象之间的通信。

QT线程 Emit、Sgnals、Slot详细解释_第1张图片

 

这篇文章给大家讲解最主要的三个点,其它的一大堆内容请参考:该连接  

本文作者原创,转载请附上文章出处与本文链接。

QT线程 Emit、Sgnals、Slot详细解释目录

1、 线程部分

.h源文件代码

.cpp实现文件代码

2、 界面代码响应

.h源文件代码

.cpp实现文件代码

3、 断开信号连接

4. 多线程的各种操作


1、 线程部分

这个线程最主要就是使用了Emit发射信号

.h源文件代码

class Consumer  : public QThread
{
    Q_OBJECT
public:

    void run();

// 信号声明
signals:
    void isDone();  //处理完成信号
};

.cpp实现文件代码

void Consumer::run()
{
    emit isDone();  //发送完成信号
}

2、 界面代码响应

主要实现了接收Emit返回的信号,并绑定槽函数实现响应

.h源文件代码

public:
    void mySlot();//用来响应线程Emit发射的信号
private:
    Consumer *writer; 

.cpp实现文件代码

//构造函数
writer = new Consumer;
connect(writer, &Consumer::isDone, this, &MainWindow::mySlot);

// 定义槽函数 mySlot()
void MainWindow::mySlot()
{
    QMessageBox::about(this,"Tsignal", "响应线程中的mySlot函数");
}

//界面BUT按钮
writer->start();
writer->quit();
writer->wait();

多次点击每次都会接收到信号

QT线程 Emit、Sgnals、Slot详细解释_第2张图片

3、 断开信号连接

断开后再次点击开启线程不会接收到Emit信息

void MainWindow::on_pushButton_3_clicked()
{

    writer->disconnect(writer,0,0,0);
}

4. 多线程的各种操作

以下文章均为作者原创文章,看完记得收藏、关注加

线程、进程、多线程、线程池一文看懂从此秒变大佬!:https://blog.csdn.net/qq_37529913/article/details/115533429

QT 初识线程(简单实现):https://blog.csdn.net/qq_37529913/article/details/110127940

QT QMutex使用详解:https://blog.csdn.net/qq_37529913/article/details/110187452

QT 线程之QSemaphore(深入理解):https://blog.csdn.net/qq_37529913/article/details/110187121

QT线程 Emit、Sgnals、Slot详细解释:https://blog.csdn.net/qq_37529913/article/details/110211435

QT 线程之QWaitCondition(深入理解):https://blog.csdn.net/qq_37529913/article/details/110212704

Qt 多线程之线程事件循环(深入理解):https://blog.csdn.net/qq_37529913/article/details/110229382

QT线程之QObjects(深入理解):https://blog.csdn.net/qq_37529913/article/details/110228837

QT线程之可重入与线程安全(深入理解):https://blog.csdn.net/qq_37529913/article/details/110224166

QT 主线程子线程互相传值:https://blog.csdn.net/qq_37529913/article/details/110506178

QT线程同步与异步处理:https://blog.csdn.net/qq_37529913/article/details/110521759

QT 多线程之线程池QThreadPool(深入理解):https://blog.csdn.net/qq_37529913/article/details/115536799

QT之浅拷贝、深拷贝、隐式共享(深度理解必看文章):https://blog.csdn.net/qq_37529913/article/details/110235596

QT 隐式共享机制对STL样式迭代器的影响:https://blog.csdn.net/qq_37529913/article/details/110252454

你可能感兴趣的:(#,QT开发之路,多线程编程,QT,Emit)