QTimer、QElapsedTimer、timeout()事件、singleShot事件

实现

QTimer 定时器 、timeout()事件、singleShot事件的使用 

QElapsedTimer 计数器的使用

布局

设置第一个和第二个groupBox高度为固定 

timerexample.cpp

#include "timerexample.h"
#include "ui_timerexample.h"
#include "QTime"
#include "QTimer"timerExample::timerExample(QWidget *parent): QWidget(parent), ui(new Ui::timerExample)
{ui->setupUi(this);this->m_timer = new QTimer(this);this->m_timer->stop();m_timer->setTimerType(Qt::CoarseTimer);ui->radioCoarse->setChecked(true);ui->radioContinue->setChecked(true);connect(m_timer,SIGNAL(timeout()),this,SLOT(do_timer_timeout()));ui->btnStop->setEnabled(false);
}timerExample::~timerExample()
{delete ui;
}void timerExample::do_timer_timeout()
{QApplication::beep();QTime curTime = QTime::currentTime();ui->lcdHour->display(curTime.hour());ui->lcdMinute->display(curTime.minute());ui->lcdSecond->display(curTime.second());if(m_timer->isSingleShot()){int tmpElapsed=  m_counter.elapsed();QString str = QString("流逝的时间:%1 毫秒").arg(tmpElapsed);ui->labElapsedTime->setText(str);ui->btnStop->setEnabled(false);ui->btnStart->setEnabled(true);ui->btnOneShot->setEnabled(true);}
}void timerExample::on_btnStart_clicked()
{//给timer设置间隔m_timer->setInterval(ui->spinInterval->value());if(ui->radioContinue->isChecked()){m_timer->setSingleShot(false);}else if(ui->radioOneShot->isChecked()){m_timer->setSingleShot(true);}if(ui->radioPrecise->isChecked()){m_timer->setTimerType(Qt::PreciseTimer);}else if(ui->radioCoarse->isChecked()){m_timer->setTimerType(Qt::CoarseTimer);}else if(ui->radioVeryCoarse->isChecked()){m_timer->setTimerType(Qt::VeryCoarseTimer);}m_timer->start();m_counter.start();ui->btnStart->setEnabled(false);ui->btnOneShot->setEnabled(false);ui->btnStop->setEnabled(true);}void timerExample::on_btnStop_clicked()
{m_timer->stop();int tmp = m_counter.elapsed();int sec= tmp/1000;QString str =QString("流逝的时间:%1秒 %2 毫秒").arg(sec).arg(tmp%1000);ui->labElapsedTime->setText(str);ui->btnStart->setEnabled(true);ui->btnOneShot->setEnabled(true);ui->btnStop->setEnabled(false);
}void timerExample::do_timer_shot()
{QApplication::beep();int tmp= m_counter.elapsed();QString str =QString("流逝的时间:%1 毫秒").arg(tmp);ui->labElapsedTime->setText(str);
}void timerExample::on_btnOneShot_clicked()
{int interval = ui->spinInterval->value();QTimer::singleShot(interval,Qt::PreciseTimer,this,&timerExample::do_timer_shot);m_counter.start();ui->btnOneShot->setEnabled(false);}

效果

 

步骤回顾

1、在.h文件中声明QTime *m_timer;  QElaplsedTimer m_count;

2、在.h文件中声明signal  do_time_out 

3、在构造函数中初始化 m_timer,先停止,设置setTimeStyle 精确模式,将timer的 timeout信号绑定到槽函数

4、设置interval,启动m_timer

5、执行timeout函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/30127.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分享一个dnslog在线平台

DNSLog Platform 页面只有两个按钮,点击Get Subdomain可以随机生成一个dnslog 点击Refresh Record,刷新这个dnslog的记录。可以查看到这条dnslog的IP地址和创建时间。

QT6不自动生成pro文件

安装了QT的新版本结果他不自动生成pro文件了导致下次打开很复杂 记得在创建时选择qmake,因为新版默认cmake

大模型“诸神之战”,落地才是赛点

ChatGPT 诞生已经快一年,你还在与它对话吗? 有的人用来写报告、改代码,让它成为得力帮手;有的人却只是“调戏”个两三回,让它创作诗歌或故事,便不再“宠幸”。 根据网站分析工具 SimilarWeb 的数据&#…

Zookeeper 集群广播事务性能如何保证?

Zookeeper 集群广播事务性能如何保证? zookeeper是如何保证广播事务时,从开始到多数节点确认事务这个高效的? 在 Zookeeper 中,确保广播事务从开始到多数节点确认的高效性至关重要。Zookeeper 通过以下几个关键机制 和优化策略来实现这一目标: ZAB 协议(Zookeeper Atom…

delphi 如何使用TEdgeBrowser组件以及打包环境在其他主机上运行

不管开发环境还是第三方环境先安装运行时库:Microsoft Edge WebView2 | Microsoft Edge Developer 开发环境可以直接通过: delphi IDE安装 安装完毕后进入到指定路径,复制里面的WebView2Loader.dll到你要开发的程序根目录: 大致路…

CentOS7下修改配置yum源

在CentOS 7中,修改YUM源可以通过以下步骤进行: 1. 备份当前的YUM源: cp -ar /etc/yum.repos.d /etc/yum.repos.d.bak 2. 清除原有的YUM源文件: rm -f /etc/yum.repos.d/* 3.以阿里云YUM源为例,创建一个新的YUM源配置文件: vim /etc/yum.repo…

未来工牌:蓝牙智联的彩色墨水屏工牌

在快节奏的现代职场中,传统的工牌已无法满足人们对于个性化和智能化的需求。为此,我们创新研发了一款4寸电子墨水屏工牌,它不仅仅是一个身份的象征,更是一个集蓝牙通信、智能显示、节能环保于一体的未来工具。 这款工牌拥有600*4…

电压模式R-2R DAC的工作原理和特性

本文将探讨电压模式R-2R DAC结构。 在本文中,我们将探索什么是R-2R DAC以及如何实现它们。 首先,我们将简要回顾一下开尔文分压器DAC。这种结构很简单,但它们需要大量的电阻和开关来实现高分辨率DAC。这个问题的一个解决方案是称为R-2R DAC…

内核启动时的中断和时钟的初始化流程

总结 内核通过start_kernel从汇编进入c世界,在用serup_arch设置体系架构的时候,会返回当前机器的machine_desc;然后init_IRQ和time_init来初始化中断。时钟子系统 start_kernelsetup_arch(&command_line);mdesc setup_machine_fdt(ata…

用友YonSuite打通招银云直联,让企业收付款更便利

在当今数智化浪潮席卷全球的背景下,企业对于高效、便捷的管理系统需求日益增加。作为全球领先的企业云服务与软件提供商,用友始终站在技术前沿,致力于为成长型企业提供全方位的数智化解决方案。 用友网络与招商银行通过联通双方系统&#xf…

YOLOv8改进 | 卷积模块 | 用坐标卷积CoordConv替换Conv

💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录:《YOLOv8改进有效涨点》专栏介绍 & 专栏目录 | 目前已有40篇内容,内含各种Head检测头、损失函数Loss、B…

消息订阅报错-用户拒绝: errMsg

微信小程序-消息订阅报错 前提问题解决 前提 小程序开发过程中,使用消息订阅功能。 问题 场景一:再注册成功之后进行消息订阅功能。 这里消息订阅功能写在接口请求成功的方法里面。 但是项目运行起来,消息订阅功能并没有被调用起来。 并且…

pytorch保存加载模型的两种方式

这里写目录标题 pytorch保存模型的两种方式开始:定义一个简单的模型方式一:保存和加载模型的状态字典方式二:2保存和加载整个模型 pytorch保存模型的两种方式 开始:定义一个简单的模型 import torch import torch.nn as nn impo…

JSP中实现文件上传下载

JSP中实现文件上传下载 文章目录 JSP中实现文件上传下载前言一、文件上传1、将jar包放入WEB-INF目录下的lib目录2、实现upload.jsp3、实现MyUploadServlet 二、文件下载1.download.jsp2.MyDownloadServlet 前言 在java web开发中,实现单个或多个文件的上传下载&…

期货的心态

1.跌倒之后爬起过程中的收获 失败跌倒了,一定不要自暴自弃,而是要有跌倒不要紧,要相信爬起来的过程中都会有一定的收获,从交易错误中走出并升华,这就会一步步的使我们迈向更高层次的交易。 2.不要让今天的交易影响到明…

智能化立体仓库的种类有哪些?

在仓储运输系统中,自动化立体仓库可充分利用空间储存货物,故而也被称之为高层货架仓库。在实际应用中,自动化仓库系统是不需人工处理的情况下能自动存储和取出物料的系统。那么,智能化立体仓库的种类有哪些?下面就让小…

MySQL相关的19个笔试题

以下是MySQL相关的19个笔试题,涵盖了MySQL的基础知识、SQL语句、索引、事务、优化等方面: 1. MySQL是什么类型的数据库? 答案:MySQL是一个开源的关系型数据库管理系统(RDBMS)。 2. MySQL支持哪些数据类型…

用Selenium自动化Web应用测试!

在开发和维护Web应用时,测试是确保应用正常运行的关键环节。手动测试不仅费时费力,而且容易出错。而通过使用Selenium,程序员可以轻松模拟用户交互、验证页面元素,从而自动化测试过程,提升测试效率和准确性。 解决的问…

第十五章 观察者模式

目录 1 观察者模式介绍 2 观察者模式原理 3 观察者模式实现 4 观察者模式应用实例 5 观察者模式总结 1 观察者模式介绍 观察者模式的应用场景非常广泛,小到代码层面的解耦,大到架构层面的系统解耦,再或者 一些产品的设计思路&#xff0c…

FREERTOS中,队列按键捕获

队列消息获取的按键任务优先级 < 队列消息释放的按键任务优先级 会出现错误&#xff0c;必须先按KEY1&#xff0c;才能按KEY0 解决方法&#xff1a;修改任务的优先级&#xff0c;队列消息获取的按键任务优先级 > 队列消息释放的按键任务优先级