QT中线程中使用信号和槽传数据

ops/2025/2/19 13:22:58/

mainwindow.h 

#ifndef WORKERTHREAD_H
#define WORKERTHREAD_H#include <QObject>
#include <QThread>
#include <QQueue>
class WorkerThread : public QThread
{Q_OBJECT
public:explicit WorkerThread();
private:void run() override;  //重新实现run()signals:void sendData(float zhi);};#endif // WORKERTHREAD_H

workerthread.cpp 


#include <iostream>
#include "workerthread.h"
#include <QTimer>WorkerThread::WorkerThread()
{}void WorkerThread::run()
{std::cout << "Thread started" << std::endl;std::this_thread::sleep_for(std::chrono::seconds(5)); // 延时2秒std::cout << "Thread finished" << std::endl;emit sendData(5.28);
}

mainwindow.h 

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class WorkerThread;
class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui;WorkerThread* t;private slots:void receiveData(float zhi);
};
#endif // MAINWINDOW_H

mainwindow.cpp 

#include "mainwindow.h"
#include "ui_mainwindow.h"#include <QApplication>#include <QThread>
#include <QDebug>
#include <QTimer>#include<workerthread.h>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);t=new WorkerThread;connect(t,&WorkerThread::sendData,this,&MainWindow::receiveData);t->start();//t->wait();  //线程执行完之前,会一直堵塞在这,一般用不上,因为用线程就是为了避免堵塞
}void MainWindow::receiveData(float zhi){qDebug()<<"receive data from thread : "<<zhi;
}
MainWindow::~MainWindow()
{delete ui;
}

FR:徐海涛(hunklxu)


http://www.ppmy.cn/ops/158729.html

相关文章

【技术产品】DS三剑客:DeepSeek、DataSophon、DolphineSchduler浅析

引言 在大数据与云原生技术快速发展的时代&#xff0c;开源技术成为推动行业进步的重要力量。本文将深入探讨三个备受瞩目的开源产品组件&#xff1a;DeepSeek、DataSophon 和 DolphinScheduler&#xff0c;分别从产品定义、功能、技术架构、应用场景、优劣势及社区活跃度等方面…

【Elasticsearch】标准化器(Normalizers)

Elasticsearch 的标准化器&#xff08;Normalizers&#xff09;是一种特殊的分析器&#xff0c;用于对keyword类型字段的文本进行统一的格式化处理。与普通分析器不同&#xff0c;标准化器只能产生单个标记&#xff08;token&#xff09;&#xff0c;因此它不包含分词器&#x…

比较循环与迭代器的性能:Rust 零成本抽象的威力

一、引言 在早期的 I/O 项目中&#xff0c;我们通过对 String 切片的索引和 clone 操作来构造配置结构体&#xff0c;这种方法虽然能确保数据所有权的正确传递&#xff0c;但既显得冗长&#xff0c;又引入了不必要的内存分配。随着对 Rust 迭代器特性的深入了解&#xff0c;我…

07:串口通信(二):收发数据包

1、数据包 我们使用上位机个单片机发送数据包时&#xff0c;规定包头和包尾&#xff0c;将我们需要发送的数据放在中间&#xff0c;数据的长度我们也可以自己规定。一般情况下HEX数据包我们使用固定长度数据包。而文本数据包使用是可变长度数据包。 2、HEX数据包 2.1、HEX固定…

Python练习11-20

题目&#xff1a;古典问题&#xff1a;有一对兔子&#xff0c;从出生后第3个月起每个月都生一对兔子&#xff0c;小兔子长到第三个月后每个月又生一对兔子&#xff0c;假如兔子都不死&#xff0c;问每个月的兔子总数为多少&#xff1f; 题目&#xff1a;判断101-200之间有多少…

【C#】条件运算符

1.逻辑与(&&) Console.WriteLine(true && true);//true Console.WriteLine(true && false);//false Console.WriteLine(false && false);//false2.逻辑或(||) Console.WriteLine(true || true);//true Console.WriteLine(true || false);//t…

尚硅谷爬虫note006

一、ajax的get请求 1. ajax的get请求—豆瓣电影第一页 # _*_ coding : utf-8 _*_ # Time : 2025/2/13 15:14 # Author : 20250206-里奥 # File : demo23_ajax的get请求 # Project : PythonProject10-14import urllib.requestfrom demo17_qingqiuduixaingdedingzhi import hea…

OpenVINO 2025.0重磅升级:开启⽣成式AI全场景⾰命!

2025年2⽉6⽇&#xff0c;英特尔OpenVINO™ 2025.0版本震撼发布&#xff0c;本次升级堪称近三年最⼤规模技术⾰新&#xff01;从⽣成 式AI性能跃升到全栈硬件⽀持&#xff0c;从开发者⼯具链优化到边缘计算突破&#xff0c;六⼤核⼼升级重新定义AI部署效率。 一&#xff0c;&a…