Qt常用类 - QTimer
1 开发环境
在介绍内容之前,先说明一下开发环境,如下图:
Qt版本:Qt5.3.2;
Qt开发工具:Qt Creater 3.2.1;
Qt构建工具:Desktop Qt 5.3 MinGW 32bit;
Qt开发平台:Windows 7 64bit。
2 QTimer
QTime是Qt中用到的定时器类,可以用于设定定时器。下面介绍QTimer的基本使用方法。
首先,创建一个Qt Widgets Application;其次,在自己命名的Widgets类(这里就以我自己命名的类来说了,类名为CWidget)的头文件和CPP文件里写代码即可。
下面是CWidget.h文件中的代码。
#include <QWidget>
#include <QTimer>
#include <QTime>
namespace Ui
{
class CWidget;
}
class CWidget : public QWidget
{
Q_OBJECT
public:
explicit CWidget(QWidget *parent = 0);
~CWidget();
private slots:
void on_btnQTimer_clicked(); //在UI设计其中添加一个按钮组件,然后添加该按钮的槽函数
void myTimerOut(); //定时器信号对应的槽函数
private:
Ui::CWidget * ui;
QTimer * myTimer; //定时器变量
QTime myTimerElapsed; //计时定时器间隔时间,关于QTime的用法,可以参考我的博客 - “0004:Qt常用类 - QTime”
};
#endif // CWIDGET_H
下面是CWidget.cpp文件中的代码。
#include "CWidget.h"
#include "ui_CWidget.h"
#define qPrintableU8(_string) (QString(_string).toUtf8().constData())
#define DATE_STRING_FORMAT ("yyyy-MM-dd")
#define TIME_STRING_FORMAT ("hh:mm:ss.zzz")
#define DATETIME_STRING_FORMAT ("yyyy-MM-dd hh:mm:ss.zzz")
CWidget::CWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::CWidget),
myTimer(NULL)
{
ui->setupUi(this);
}
CWidget::~CWidget()
{
if (myTimer && myTimer->isActive())
{
myTimer->stop();
delete myTimer;
qDebug("myTimer stop...");
}
delete ui;
}
void CWidget::on_btnQTimer_clicked()
{
if (!myTimer)
{
myTimer = new QTimer(this);
connect(myTimer, SIGNAL(timeout()), this, SLOT(myTimerOut()));
myTimer->setTimerType(Qt::PreciseTimer);
myTimer->start(1000);
myTimerElapsed.start();
qDebug("myTimer start...");
}
}
void CWidget::myTimerOut()
{
qDebug("myTimer is running, now time: %s, elapsed: %dms",
qPrintableU8(QTime::currentTime().toString(TIME_STRING_FORMAT)),
myTimerElapsed.elapsed());
myTimerElapsed.restart();
}
下面是main.cpp文件中的代码。
#include "CWidget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
CWidget w;
w.show();
return a.exec();
}
代码编写完毕后,调试运行,在Qt Creater中的应用程序输出窗口中就可以看到输出结果了。