如果需要在程序中周期性的处理事件,比如每秒种触发一次事件,那么可以使用QTimer。注意 QTimer 和 QTime 是不同的。
本文参照《Qt 定时器Timer使用》的介绍,测试代码成功。新建一个 Widget 程序,一切保持默认,然后修改代码,在UI设计里添加一个Label控件。
代码实现
mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: Ui::MainWindow *ui; private slots: void timerUpDate(); }; #endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QtCore> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); QTimer *timer = new QTimer(this); connect(timer,SIGNAL(timeout()),this,SLOT(timerUpDate())); timer->start(1000); } MainWindow::~MainWindow() { delete ui; } void MainWindow::timerUpDate() { QDateTime time = QDateTime::currentDateTime(); QString str = time.toString("yyyy-MM-dd hh:mm:ss dddd"); ui->label->setText(str); }
运行结果
运行结果,程序每秒更新窗口label文本。
源码下载
扩展阅读
- QT 定时器QTimer
http://inching.org/2014/05/09/qt-timer/