前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Qt定时器(一)

Qt定时器(一)

作者头像
zy010101
发布2020-04-14 21:41:20
4090
发布2020-04-14 21:41:20
举报
文章被收录于专栏:程序员程序员

定时器也是一个我们经常使用的东西。下面的代码演示了定时器的基本使用方法。

代码语言:javascript
复制
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("CLOCK");              //设置窗口标题
    
    //设置标签显示信息
    ui->label->setText(QString("<center><h1>00</h1></center>"));       
    ui->label_2->setText(QString("<center><h1>00:</h1></center>"));
    ui->label_3->setText(QString("<center><h1>00:</h1></center>"));
    
    //启动定时器使用函数startTimer(),它的返回值唯一标识一个定时器
    id1 =  startTimer(1000*60*60);              //1时
    id2 = startTimer(1000*60);                     //1分
    id3 = startTimer(1000);                           //1秒
}

void MainWindow::timerEvent(QTimerEvent *event)
{
    if(this->id3 == event->timerId()) //event有个函数叫timerId可以获取是哪个定时器发出的事件
    {
        static int num1= 0;
        if(60 == num1)
        {
            num1 = 0;
        }
        if(10 <= num1)                      //QString::number()能把一个int转换为Qstring类型。
        ui->label->setText(QString("<center><h1>%1</h1></center>").arg(QString::number(num1++)));
        else
        ui->label->setText(QString("<center><h1>0%1</h1></center>").arg(QString::number(num1++)));  
    }
    if(this->id2 == event->timerId())
    {
        static int num2= 0;
        if(60 == num2)
        {
            num2 = 0;
        }
        if(10 <= num2)
        ui->label_2->setText(QString("<center><h1>%1:</h1></center>").arg(QString::number(num2++)));
        else
        ui->label_2->setText(QString("<center><h1>0%1:</h1></center>").arg(QString::number(num2++)));    
    }
    if(this->id1 == event->timerId())
    {
        static int num3= 0;
        if(24 == num3)
        {
            num3 = 0;
        }
        if(10 <= num3)
        ui->label_3->setText(QString("<center><h1>%1:</h1></center>").arg(QString::number(num3++)));
        else
        ui->label_3->setText(QString("<center><h1>0%1:</h1></center>").arg(QString::number(num3++)));  
    }
}

MainWindow::~MainWindow()
{
    delete ui;
}

运行结果如下所示:

当然了这样的CLOCK肯定是一点都不准确的。因为QTimer是一个定时器,它不是获取系统时间的。要想显示准确的时间还是需要获取系统时间,使用QTime这是比较稳妥的做法。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档