Qt多线程之线程之间的传递数据

2023-05-16

.hpp

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include<QTime>
#include<QThread>
static QVector<int>myArray;
static QVector<int>myAnotherArray;
namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();
    void updateSlot(int _number);

    void on_pushButton_2_clicked();

private:
    Ui::MainWindow *ui;
    int number;
};

class MyThread:public QThread
{
    Q_OBJECT
public:
    MyThread(){}
    void run();
    void getNumber(int & number);
signals:
    void updateSignal(int num);
private:
    int myNumber;

};

#endif // MAINWINDOW_H

.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QDebug>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    MyThread * thread = new MyThread();
    thread->start();
    connect(thread,SIGNAL(updateSignal(int)),this,SLOT(updateSlot(int)));

}

MainWindow::~MainWindow()
{
    delete ui;

}

void MainWindow::on_pushButton_clicked()
{
    QTime time;
    time= QTime::currentTime();
    qsrand(time.msec()+time.second()*1000);
    int n = qrand() % 50; //产生50以内的随机数
    myArray.push_back(n);


}

void MainWindow::on_pushButton_2_clicked()
{
//    if(myAnotherArray.size() >0)
//    {
//        int front = myAnotherArray.front();
//        ui->plainTextEdit->appendPlainText(QString::number(front));
//        myAnotherArray.pop_front();
//    }

}

void MainWindow::updateSlot(int _number){

    ui->plainTextEdit->appendPlainText(QString::number(_number));

}

void MyThread::getNumber(int & number){

    myNumber = number;
}

void MyThread::run(){

    while(!isInterruptionRequested())
    {
        if(myArray.size() > 0)
        {

            myNumber = myArray.front();
            myAnotherArray.push_back(myNumber);
            qDebug()<<myNumber;
            myArray.pop_front();

            emit updateSignal(myNumber);
            msleep(50);
        }
    }

}

main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

运行结果
在这里插入图片描述
线程中生成的随机数
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt多线程之线程之间的传递数据 的相关文章

  • 使用LiveNVR实现RTSP视频监控、直播推送

    LiveNVR LiveNVR能够通过简单的网络摄像机通道配置 xff0c 将传统监控行业里面的高清网络摄像机IPCamera NVR等具有RTSP Onvif协议输出的设备接入到LiveNVR xff0c LiveNVR能够将这些设备源的
  • 四旋翼飞行器——电调篇

    1 电调的作用 xff1a 电调的作用就是将飞控板的PWM控制信号转变为电流信号 xff0c 以控制电机的转速 因为电机的电流是很大的 xff0c 通常每个电机正常工作时 xff0c 平均有3A左右的电流 xff0c 如果没有电调的存在 x
  • GPS 0183协议GGA、GLL、GSA、GSV、RMC、VTG、ZDA、DTM

    NMEA协议是为了在不同的GPS xff08 全球定位系统 xff09 导航设备中建立统一的BTCM xff08 海事无线电技术委员会 xff09 标准 xff0c 由美国国家海洋电子协会 xff08 NMEA The National M
  • Github的branch是什么

    Github的branch是什么
  • extern C的作用详解

    extern 34 C 34 的主要作用就是为了能够正确实现C 43 43 代码调用其他C语言代码 加上extern 34 C 34 后 xff0c 会指示编译器这部分代码按C语言的进行编译 xff0c 而不是C 43 43 的 由于C 4
  • Linux socket CAN编程示例

    如下所示 xff0c 代码展示了Linux下CAN的发送和接收 xff1a include lt stdio h gt include lt stdlib h gt include lt string h gt include lt uni
  • windows下面安装git

    注意在安装过程中选择override这个选项
  • QT中Map的使用

    Qt中的QMap介绍与使用 xff0c 在坛子里逛了一圈 xff0c 发现在使用QMap中 xff0c 出现过很多的问题 xff0c Map是一个很有用的数据结构 它以 键 值 的形式保存数据 在使用的时候 xff0c 通过提供字符标示 x
  • ubuntu 更新内核切换内核启动

    1 查看需要更新的内核命令 xff1a apt cache search linux 该命令将会显示所有可以获取的内核 2 安装内核 xff0c 假设你要安装的内核为2 6 39 0 xff0c 则使用下面的命令 sudo apt get
  • 多线程实现对同一个或多个文件的读写操作

    程序用途 xff1a 实现多个线程对同一文件的读写操作 程序代码 xff1a test c 该程序在Ubuntu下测试通过 include lt stdio h gt include lt pthread h gt include lt s
  • linux下设置共享目录

    Linux系统的文件或目录的共享功能是非常强大 xff0c 而且是非常灵活的 xff0c 其对权限的控制可以做到非常的细致 xff0c 当然如果你是通过命令行方式进行设置的 话 xff0c 那么对于刚接触linux系统的用户来说将是一件十分
  • shell 数组赋值

    shell编程 xff0c 给数组赋值及两个数组初始化与比较 bin sh output files 61 cat outfiles for i 61 0 i lt output files 64 43 43 i do echo 34 ar
  • vnc的两种配置方法及解决vnc连不上的情况

    1 vnc连不上的现象 xff1a Timed out waiting for a response from the computer 解决方法 xff1a sudo sbin iptables I INPUT 1 p TCP dport
  • linux制作本地镜像

    1 前提条件 xff1a 有安装linux系统的iso 2 添加yum文件 xff1a touch etc yum repos d iso repo iso name 61 CentOS releasever Media baseurl 6
  • 使用parted创建分区

    今天在网上查找分区方法 xff0c 发现都是用的fdisk xff0c 但自己使用总是出错 xff0c 后来请求大神帮忙 xff0c 发现了一个好用的工具 xff0c 这里把具体的使用过程记录下来 root 64 pc160 parted
  • “结构体名”和“结构体名是个指针”的区别

    经常看见下面这样的定义 xff1a typedef struct int a double b emp i pemp i typedef 了两个新的数据类型 xff08 结构体 xff09 xff0c 其中一个是指针方式的名字 int ma
  • 简答实用的宏的写法

    本篇文章主要实现打印参数的传递 xff0c 这里定义了一个宏 define debug printf format printf 34 s d 34 format 34 34 func LINE VA ARGS
  • RK1126从入门到放弃:(二)Buildroot说明

    一 目录介绍 buildroot arch 存放CPU架构相关的配置脚本 xff0c 如arm mips x86 xff0c 这些CPU相关的配置 xff0c 在制作工具链时 xff0c 编译uboot和kernel时很关键 board x
  • 二进制基础及位运算

    一 什么是二进制 二进制是计算机运算时所采用的数制 xff0c 基数是2 xff0c 也就是说它只有两个数字符号 xff0c 即0和1 如果在给定的数中 xff0c 除0和1外还有其他数 xff08 例如1061 xff09 xff0c 那
  • Django学习笔记2 HTTP协议

    HTTP协议 web前端系统和后端系统之间是通过HTTP协议进行通信的HTTP 协议全称是超文本传输协议 xff0c 英文是 Hypertext Transfer ProtocolHTTP 协议最大的特点是通讯双方分为客户端和服务端 由于目

随机推荐

  • VINS-Mono视觉初始化代码详解

    摘要 视觉初始化的过程是至关重要的 xff0c 如果在刚开始不能给出很好的位姿态估计 xff0c 那么也就不能对IMU的参数进行精确的标定 这里就体现了多传感器融合的思想 xff0c 当一个传感器的数据具有不确定性的时候 xff0c 我们需
  • 5G DTU 数据上传 无线通信

    5G数据采集上传DTU xff0c 和各种使用串口通信的用户设备进行连接 xff0c 通过无线网络进行数据云端上传实现远程实时在线监测 采用心跳包保持永久在线 xff0c 支持断线自动重连 自动重拨号等特点 5G DTU组网迅速灵活 xff
  • 5G DTU地下水水位监测

    地下水监管不当会造成地面沉降 地裂缝 岩溶塌陷 海水入侵 水质污染等危害 xff0c 掌握了解地下水水位 分布等状态 xff0c 响应可持续发展的号召 xff0c 提高地下水资源科学保护和合理利用 计讯物联地下水水位监测系统平台采用5GDT
  • 5g DTU 无线数传终端应用

    DTU无线数传终端TD210全网通2G 3G 4G网络 xff0c 实现串口数据与IP数据的转换 xff0c DTU作为串口数据的无线终端设备 xff0c 可广泛应用于各行各业 DTU无线数传终端TD210应用 第一 xff0c 农业领域
  • 使用L298N电机驱动器和Arduino控制步进电机

    在本文中 xff0c 您将学习如何使用L298N电动机驱动器控制步进电动机 该驱动板通常用于控制直流电动机 xff0c 但它还是控制步进电动机的廉价替代品 xff01 它可以控制大多数步进电机 xff08 例如NEMA 17 xff09 的
  • STM32串口通讯(接收完成一整个数据帧再将数据发送出去)

    STM32串口通信可以分为查询 xff0c 中断 xff0c DMA三种方式进行通讯 xff0c 本文主要就中断的方式进行讲解 采用中断的方式进行通讯时 xff0c 可以使能接受非空中断 xff08 RXNE xff09 xff0c 当接收
  • 树的先序、中序、后序遍历

    遍历分分先序 中序 后序 先序 xff1a 先访问根结点 左结点 右结点 中序 xff1a 先访问左结点 根结点 右结点 后序 xff1a 先访问左结点 右结点 根结点 先序 xff1a ABC 中序 xff1a BAC 后序 xff1a
  • 调整Arduino STM32的串口缓存大小的方法

    通常Arduino中调整串口缓存大小的方法是修改HardwareSerial h中的常量 其实根本无需修改系统core中的定义值 xff0c 只需要在代码最上方添加以下常量定义 xff0c 抢在HardwareSerial h之前定义缓存大
  • C++入门学习(头文件)

    1 C 43 43 中的头文件 1 1 标准库中的头文件 C 43 43 标准库中的一切内容都被放在名字空间std中 xff08 名字空间中的内容对外是不可见的 xff09 xff0c 但是带来了一个新问题 xff0c 无数现有的C 43
  • 用for循环实现delay延时原理

    void Delay10ms unsigned int c 误差 0us unsigned char a b for c gt 0 c c可以不用初始化 xff0c 因为默认传的参数即为初始化 for b 61 38 b gt 0 b fo
  • 解决ROS中运行gazebo出现process has died的情况

    项目场景 xff1a gazebo 1 process has died pid 397 exit code 255 cmd opt ros melodic lib gazebo ros gzserver e ode worlds empt
  • 使用Ventoy制作U盘启动项

    最近在安装linux镜像的时候遇到了使用UltraISO软件制作U盘启动盘无法使用的情况 下面介绍另外一个软件把U盘制作成启动盘Ventoy xff1a 下载地址 xff1a Ventoy 使用方法 xff1a 1 下载好Ventoy xf
  • git 快速入手

    目录 一 xff1a 初次使用git及github 二 xff1a 将github上下载的代码上传到自己的github仓库里 三 xff1a 使用HTTP上传自己写的项目至github git常用指令汇总 使用需求 xff1a 初次接触gi
  • 线程、进程、并发、cpu、gpu的联系

    1 线程和进程的区别 进程 xff1a 一个在内存中运行的应用程序 每个进程都有自己独立的一块内存空间 xff0c 一个进程可以有多个线程 比如在Windows系统中 xff0c 一个运行的xx exe就是一个进程 线程 xff1a 进程中
  • ubuntu系统安装cuda、cudnn、pytorch和libtorch

    1 安装cuda和cudnn 本机安装的cuda版本11 0 2 cudnn版本 v8 0 5 cu11 0 Ubuntu20 04下CUDA cuDNN的详细安装与配置过程 xff08 图文 xff09 ubuntu20 04安装cuda
  • 深度学习语法篇

    一 基本常识 图像的分辨率的通道数 分辨率和通道数是两个不同的概念 分辨率指的是图像的像素数量 xff0c 它反映了图像的清晰度和细节程度 例如 xff0c 一个分辨率为64x64的图像意味着它有64个像素行和64个像素列 xff0c 总共
  • 第二讲:线性表示及坐标

    第二讲 xff1a 线性表示及坐标 一 线性表示 1 线性表示定义 xff1a 设 是线性空间V中的向量 xff0c 若存在V中一组向量 1 xff0c 2 xff0c xff0c n xff0c 及一组数x1 xff0c x2 xff0c
  • 快速理解掌握指针

    p gt next 61 q 像这种语句 xff0c 表示改变了p后面的连接关系 p 61 q gt next 这类语句 xff0c 没改变连接关系 xff0c 只是赋值而已 解读代码中指针所代表的节点之间的前后连接关系 只要输出该指针对应
  • 第三讲:子空间

    第三讲 xff1a 子空间 一 子空间定义 1 子空间 xff1a 设V是数域F上的线性空间 xff0c W是V的子集 xff0c 若对W中的任意元素 xff0c 及数K F xff0c 按V中的加法和数乘有 xff1a 1 xff09 4
  • Qt多线程之线程之间的传递数据

    hpp span class token macro property span class token directive keyword ifndef span MAINWINDOW H span span class token ma