0006:Qt常用类 - QTimer

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中的应用程序输出窗口中就可以看到输出结果了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值