定時器也是一個我們經常使用的東西。下面的代碼演示了定時器的基本使用方法。
#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這是比較穩妥的做法。