QT 实现QThread timer 线程sleep,计时功能


前言

实现的功能:

2个按键,分别是启动和停止线程,当QT线程启动时,LCD组件以步进1的方式显示

工程文件 结构:


一、创建工程

先创建桌面Widget工程,然后添加新增类,Base类设置为继承Widget,然后再把类继承的QWidget改成QThread

class myThd : public QThread
{
    Q_OBJECT
public:
    explicit myThd(QThread *parent = nullptr);

二、源代码:

1.线程类:

myhd.h :

#ifndef MYTHD_H
#define MYTHD_H

#include <QWidget>
#include <QThread>

class myThd : public QThread
{
    Q_OBJECT
public:
    explicit myThd(QThread *parent = nullptr);

signals:
    void vsignalTimeout();

public slots:

protected:
    void run();

public:
    void vSetTimeSet(uint);
private:
    uint slTimeSec=1;
};

#endif // MYTHD_H

myhd.cpp

线程的run函数为线程执行部分,sleep指定的时间,然后发送timeout信号。

#include "mythd.h"
#include <QDebug>

myThd::myThd(QThread *parent) : QThread(parent)
{

}


void myThd::vSetTimeSet(uint ulTime)
{
    this->slTimeSec=ulTime;
}

void myThd::run()
{
    while(1)
    {
        sleep(this->slTimeSec);
        emit vsignalTimeout();
    }
}

2.Widget显示类

widget.h:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include "mythd.h"

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    Ui::Widget *ui;
    myThd *pthd;
    int slCnt=0;

private slots:
    void vDoThdTimeout(void);
    void on_pushButton_clicked();
    void on_pushButton_2_clicked();
};
#endif // WIDGET_H

widget.cpp

声明mythd类和计秒步进加1显示到LCD控件上

初始化设置pthd的sleep时间为1秒,并且绑定槽函数到vDoThdTimeout

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->pthd=new myThd();
    this->pthd->vSetTimeSet(1);
    connect(this->pthd,SIGNAL(vsignalTimeout()),this,SLOT(vDoThdTimeout()));
    //this->pthd->start();
}

Widget::~Widget()
{
    delete this->pthd;
    delete ui;
}

void Widget::vDoThdTimeout()
{
    qDebug()<<"slot timeout"<<endl;
    this->slCnt++;
    ui->lcdNumber->display(this->slCnt);
}


void Widget::on_pushButton_clicked()
{
    this->pthd->start();
}

void Widget::on_pushButton_2_clicked()
{
    this->pthd->terminate();
}

 

邓工BaoFeng.Deng
关注 关注
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt中使用sleep
我一路走来---
02-10 15万+
 在Qt中使用sleep关于sleep函数,我们先来看一下他的作用:sleep函数是使调用sleep函数的线程休眠,线程主动放弃时间片。当经过指定的时间间隔后,再启动线程,继续执行代码。sleep函数并不能起到定时的作用,主要作用是延时。在一些多线程中可能会看到sleep(0);其主要目的是让出时间片。sleep函数的精度非常低,当系统越繁忙的时候它精度也就越低,有时候我们休眠1秒,可
PyQt5 QThread计时
mtjmtj7的博客
03-31 454
创建多线程类 全局变量 sec class work_thread(QThread): timer = pyqtSignal() # 每隔一秒发送信号 end = pyqtSignal() # 计数完成发送信号 def run(self) -> None: while True: self.sleep(1) if sec == 0: self.end.emit() # 发.
qt有关于睡眠
yongan1006的专栏
04-01 7884
来自:http://blog.csdn.net/johnphan/article/details/7299385 第一部分: 关于sleep函数,我们先来看一下他的作用:sleep函数是使调用sleep函数的线程休眠,线程主动放弃时间片。当经过指定的时间间隔后,再启动线程,继续执行代码。sleep函数并不能起到定时的作用,主要作用是延时。在一些多线程中可能会看到sleep(0);其主要目的是让
qt线程睡眠
aiq8620的博客
01-09 1104
头文件 #include <QThread> 接口函数: void QThread::sleep ( unsigned long secs ) [static protected] void QThread::msleep ( unsigned long msecs ) [static protected] void QThread::usleep ( unsigne...
Thread SleepTimer
euijkfd的专栏
01-30 2009
1. Thread.sleep()休眠的目前正在执行的线程,比如下面的类里,当前线程指的是main主线程。 public static void main(String[] args)  {   Timer timer =new Timer();   //1000毫秒等于1秒   timer.schedule(new DelayTask(), 1000);      try {
QT sleep
u012922277的专栏
01-22 427
void CProgressDialog::sleep(int ms)         {             QElapsedTimer t;             t.start();             while(t.elapsed()                 QCoreApplication::processEvents();         }
qt线程启动后等待返回_QT5 Thread线程
weixin_39607865的博客
12-18 469
QT5 Thread线程继承QThread方式一.首先分析一下 QTimer Class与 Sleep()函数之间的秘密QTimer *t = new QTimer(*parent); //创建QTimer 对象t->start(_time); //计时开始每隔_time时间自动触发&QTimer::timeout信号t->stop(); //结束计时Sleep() //win...
Qt线程详解及与事件循环、信号槽、线程设计、GUI组件通信之间的关系
qq_39262215的博客
01-02 2281
Qt线程详解及与事件循环、信号槽、线程设计、GUI组件通信之间的关系
qt线程计时
最新发布
11-20
Qt中的多线程编程主要通过QThread实现。使用QThread类的步骤如下: (1)创建一个继承自QThread的子类,并重写其run()函数,run()函数中编写子线程的代码逻辑。 (2)在主线程中创建子线程对象,并调用其start()...
QCM学习—基于QT自制上位机(多线程
yydsshuai的博客
11-11 1275
QT上位机浅试多线程
森林笔记:Qt实现界面计时
laried的博客
07-09 568
实现界面计时,在项目开发中是十分常见的。笔者在这里提供两种界面的计时操作。 定时器实现界面计时 QTimer类为计时器提供了高级编程接口。要使用它,请创建一个QTimer,将其timeout()信号连接到适当的插槽,然后调用start()。从那时起,它将以固定的时间间隔发出timeout()信号。 //建立QTimer的对象指针 timer =new QTimer(this); connect(timer,&QTimer::timeout, this,&
QThread定时器
c_tianzi的专栏
01-07 3024
如何在子线程中启动定时器: MyThread::MyThread(QObject *parent) : QThread(parent) { printf("[%d] construct\n",this->currentThreadId()); } MyThread::~MyThread() { delete timer; } void MyThread::timedone() { p
Qtsleep()的实现
rannar的博客
01-07 4435
Qtsleep()的实现(耳目一新的两种方法) 在Qt中并没有Sleep函数可以调用,在程序编写时往往需要休眠几秒,这里举出两个方法,不知道是否啥不良隐患没~~   方法一: class SleeperThread : public QThread { public:     static void msleep(unsigned long msecs)     {         Q...
Qt中使用sleep (转)
weixin_33762130的博客
03-20 5269
关于sleep函数,我们先来看一下他的作用:sleep函数是使调用sleep函数的线程休眠,线程主动放弃时间片。当经过指定的时间间隔后,再启动线程,继续执行代码。sleep函数并不能起到定时的作用,主要作用是延时。在一些多线程中可能会看到sleep(0);其主要目的是让出时间片。sleep函数的精度非常低,当系统越繁忙的时候它精度也就越低,有时候我们休眠1秒,可能3秒后才能继...
Thread.sleep()方法
热门推荐
CheerForU
03-15 2万+
为什么要用sleep,主要是为了暂停当前线程,把cpu片段让出给其他线程,减缓当前线程的执行。 两种方式: 第一种方式是只调用sleep静态方法;第二种是获取对象后再调用sleep静态方法。第二种方式效率要低一些,因为多了一次函数调用,而且通过对象调用静态方法也不太符合“静态”的定义(静态成员最好通过类名直接访问),但功能上是一致的。当需要调用非静态方法时使用第二种方式,否则直接使用第一种方式...
Threadx 定时器timer
osnet的博客
02-08 3028
Threadx 操作系统定时器提供单次定时和周期性定时功能。定时器由周期性定时中断驱动,每一个定时中断称为一个时钟节拍(tick)。时钟节拍值有系统平台决定,比如5ms一个时钟节拍,需要综合硬件条件和应用需求设置。 定时时间长度用时钟节拍个数衡量,比如时钟节拍为5ms,应用程序设置定时时间为1.5s,那么1.5s/5ms=300,调用_tx_timer_create创建定时器时,定时器值设置为30...
qt 线程睡眠
yal179的专栏
04-02 8691
引用文件: #include Qt为我们提供了几个可以用于线程Sleep的函数,分别是: void QThread::sleep ( unsigned long secs )   [static protected] void QThread::msleep ( unsigned long msecs )   [static protected] void QThread::uslee
按键休眠唤醒c语言,c – 唤醒处于睡眠状态的QThread
weixin_42294133的博客
05-19 490
如何在睡眠时唤醒QThread?我有一个在后台运行的线程,现在然后醒来并做一些小事情,但是如果我想以受控方式停止该线程,我必须等待他自己醒来以便让他退出而且由于他睡了很长时间,这可能会非常烦人.这是一个显示基本问题的示例代码.让我们从在这个例子中休眠5秒然后只打印一个点的线程开始.#include #include "TestThread.h"void TestThread::run(){runn...
深入解析Qt框架下QThread线程编程
Qt的多线程编程提供了创建和管理线程功能,以及线程间的同步机制。QThreadQt提供的用于处理多线程编程的类,它允许将线程代码与GUI代码分离,从而避免了界面冻结的问题。本实例将详细介绍QThread的基本用法,并...
写文章

热门文章

  • OpenCV-Python入门1——OpenCV简介与常用图像处理,目标检测 2182
  • C++,QT多个窗体切换,widget 多个页面切换跳转显示 1377
  • QT 实现QThread timer 线程sleep,计时功能 1214
  • 类与类之间的基础关系:依赖 1134
  • windows下QT打包可执行文件EXE 315

分类专栏

  • python 1篇
  • opencv 1篇
  • 图像识别 1篇
  • numpy
  • C++ 1篇

大家在看

  • Python OpenCV利用HSV颜色区间分离不同物体
  • YOLOV5做电线绝缘子缺陷检测
  • Python 实现PSO-RBF和RBF粒子群优化算法优化径向基函数神经网络多输入单输出回归预测
  • 2024超火的写真打赏平台搭建教程源码分享
  • Python 实现EEMD-GRU、GRU集合经验模态分解结合门控循环单元时间序列预测对比

最新文章

  • OpenCV-Python入门1——OpenCV简介与常用图像处理,目标检测
  • 类与类之间的基础关系:依赖
  • C++,QT多个窗体切换,widget 多个页面切换跳转显示
2023年1篇
2022年4篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家江西玻璃钢人物雕塑玻璃钢雕塑大黑牛淮南景区玻璃钢雕塑批发芜湖玻璃钢雕塑加工上海卡通玻璃钢动物狮子雕塑襄阳小区玻璃钢雕塑制作北京市商场美陈创意鹰潭学校玻璃钢雕塑制作水性玻璃钢花盆优缺点曲阳玻璃钢群马雕塑生产厂家潍坊潮州玻璃钢卡通雕塑安庆玻璃钢雕塑价位武都玻璃钢雕塑厂家上海玻璃钢雕塑厂大象南通玻璃钢仿铜雕塑商家玻璃钢雕塑仿竹简内蒙古玻璃钢人物雕塑报价成都个性化玻璃钢雕塑制作汉寿玻璃钢卡通雕塑珠海玻璃钢雕塑规格常州动物玻璃钢雕塑公司荥阳玻璃钢雕塑设计河北特色玻璃钢雕塑优势湖北玻璃钢青椒雕塑玻璃钢发光雕塑灯带荷花玻璃钢雕塑大禹玻璃钢雕塑头像江苏玻璃钢雕塑摆件贵阳环保玻璃钢雕塑上海大型主题商场美陈市场香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化