qt线程启动后等待返回_QT5 Thread线程

QT5 Thread线程继承QThread方式

一.首先分析一下 QTimer Class与 Sleep()函数之间的秘密

QTimer *t = new QTimer(*parent); //创建QTimer 对象

t->start(_time); //计时开始每隔_time时间自动触发&QTimer::timeout信号

t->stop(); //结束计时

Sleep() //windows.h里面的系统延时函数

通过以上方法实现案例:

//button 槽函数

voidWidget::on_buttonstart_clicked()

{

t->start(2000);

Sleep(3000);

qDebug() << "hello world!";

}

//timeout信号处理函数

connect(t,&QTimer::timeout,

[=]()

{

ui->lcd_1->display(++i);

});

分析,在没有Sleep()函数的情况下:

点击开始立马在控制台显示hello world!;每隔2秒lcd显示+1;

有Sleep()的存在后;点击开始程序本质是想每隔2秒lcd显示+1;3秒后控制台显示hello world!;

最终结果是:

点击开始,计时器计时,2秒后,不运行connect();3秒后connect()第一次运行;再过4秒,第二次timeout信号触发,再次运行connect();

最终显示结果为; 过时3秒制台显示hello world!lcd显示 1 再过时1秒显示2 再过2秒显示3 依次经过2秒显示累加1;

二.线程的引入;

如果我们想要的结果是,点击按钮,lcd每一秒显示+1, 3秒控制台回显hello world!  也就是Sleep(3000)显示hello world!并不会去影响到Qtrimer计时;

单独创建线程A,在A线程是实现延时3秒输出hello world!;

1.一个简单的控制台线程例子

新建一个qt控制台程序 自定义一个类  这里就叫class mythread

//mythread.h

#ifndef MYTHREAD_H#define MYTHREAD_H#include

class myThread: publicQThread

{public:

myThread();voidrun(); //声明继承于QThread虚函数 run()

};#endif //MYTHREAD_H

//mythread.cpp

#include"mythread.h"#includemyThread::myThread()

{

}voidmyThread::run()

{

qDebug()<< "hello world!"; //复写QThread类的 run()函数

}

//main.cpp

#include #include"mythread.h" //包涵头文件

int main(int argc, char *argv[])

{

QCoreApplication a(argc, argv);

myThread*thread1 = new myThread; //新建线程对象

thread1->start(); //启动线程

returna.exec();

}

上例启动了一个新线程中输出hello world!

改进上例:

//mythread.h

#ifndef MYTHREAD_H#define MYTHREAD_H#include

class myThread: publicQThread

{public:

myThread();voidrun();

QString name;//添加一个 name 对象

};#endif //MYTHREAD_H

//mythread.cpp

#include "mythread.h"#includemyThread::myThread()

{

}voidmyThread::run()

{

qDebug()<< th

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值