Qt小项目(三):定时器和日历

本文介绍了一个使用Qt的小项目,涉及QTime、QTimer类在UI中的应用。文章详细阐述了如何利用定时器进行动态清零和计数,处理时间溢出,并动态设置定时器区间。同时,讨论了将定时数值转换为时分秒的方法,以及在dialog-h和dialog-cpp文件中的实现细节,包括信号与槽的连接。
摘要由CSDN通过智能技术生成

UI

在这里插入图片描述

QTime和Qtimer类

区别
QTimer 定时器类,当时间溢出(记时超过定时区间)的时候,就会发出timeout信号,触发槽函数
QTime 时间类,提供时分秒

概述以及注意的点

  1. 清零和记数可以获取lineEdit的值,动态进行,取代使用static的方案
  2. 当时间溢出的时候进行处理,当清零的时候注意停止计时器,定时器的区间可以动态设置,默认区间的单位是毫秒。
  3. 把定时的数字转化为时分秒需要Time类。

以下涉及到的属性

语句 涉及到的属性 说明
QTime curTime=QTime::currentTime() 获取当前时间
QDateTime curDateTime=QDateTime::currentDateTime() 获取当前时间和日期,可以通过curDateTime.time()获取时间,curDateTime.date()获取日期,
ui->editTime->setText(curDateTime.toString("hh:mm:ss")) 设置时间,"yyyy-MM-dd hh:mm:ss"设置日期时间,显示日期同理
ui->LCDHour->display(curTime.hour()); 显示小时,minute分钟,second秒
va=ui->progressBar->value(); 进度条值的读取和赋值
QDate dt=ui->calendarWidget->selectedDate(); 读取日历上的日期
QTime tm=QTime::fromString(str,"hh:mm:ss"); 字符串格式化时间
fTimer->setInterval(ui->spinBoxIntv->value()); 设置定时器周期
fTimer->start(); 开启定时器
ui->btnSetIntv->setEnabled(false); 设置按钮不可选中
fTimeCounter.start(); 开启计时器
int tmMsec=fTimeCounter.elapsed();//毫秒数 获取计时器的数值,可以进行处理

dialog-h说明(完整头文件见最后)

  1. 包含对应的头文件
#include    <QTimer>
#include    <QTime>
  1. 定义私有变量定时器指针和计数器
private:
    QTimer *fTimer;  //定时器
    QTime   fTimeCounter;//计时器
  1. 私有槽函数声明
private slots:
    void on_timer_timeout(); //定时器中断处理槽函数,手工定义
    void on_btnGetTime_clicked();//读取当前时间
    void on_calendarWidget_selectionChanged(); //Calender 选择日期
    void on_btnSetTime_clicked();  // 读取当前日期时间  按键
    void on_btnSetDate_clicked(); //设置日期  按键
    void on_btnSetDateTime_clicked();   //设置日期时间案件
    void on_btnSetIntv_clicked();   //设置周期  按键
    void on_btnStart_clicked();  //开始 定时器 按键
    void on_btnStop_clicked();      //停止定时器按键

dialog-cpp文件说明

  1. 头文件包含
#include    <QDateTime>
#include    <QString>
  1. 在构造函数中初始化定时器,以及进行信号和槽的关联
fTimer=new QTimer(this);  //创建定时器
fTimer->stop();//暂停定时器
fTimer->setInterval(1000);//设置定时器的周期
    connect(fTimer,SIGNAL(timeout()),this,SLOT(on_timer_timeout())); //关联定时器的信号与槽(定时器溢出的行为)
  1. 槽函数void Dialog::on_timer_timeout()
void Dialog::on_timer_timeout()
{
    //定时器中断响应槽函数
    QTime curTime=QTime::currentTime(); //获取当前时间
    
    ui->LCDHour->display(curTime.hour()); //显示  小时

    ui->LCDMin->display(curTime.minute());//显示  分钟

    ui->LCDSec->display(curTime.second());//显示  秒

    int va=ui->progressBar->value(); //读取progressBar的数值
    va++;
    if (va>100)
        va=
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值