定时器也是一个我们经常使用的东西。下面的代码演示了定时器的基本使用方法。
代码语言: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这是比较稳妥的做法。