Qt定時器(一)

定時器也是一個我們經常使用的東西。下面的代碼演示了定時器的基本使用方法。

#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這是比較穩妥的做法。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章