QTimer、QTime

  • QTimer的start()設定週期,單位為毫秒,每過一次設定的時間就發出timeout()的訊號,可用stop()將定時器關掉,setSingleSlot()則僅啟動定時器一次。
  • QTime的currentTime()函式可得當下時間,toString()函式返回QTime的時間字串。
  • 這邊展示了QTimer元件的使用,以每秒鐘更新一次的周期,在QLCDNumber上顯現當下的時間,做出類似電子時鐘的效果。

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QTimer>
#include <QTime>
#include <QLCDNumber>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
private:
    QTimer *myTimer;
    QLCDNumber *myLCDNumber;

private slots:
    void showTime();  //顯示時間的函式
};

#endif 

widget.cpp

#include "widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent)
{
    setWindowTitle(tr("按鍵組"));
    myTimer = new QTimer(this);
    myLCDNumber = new QLCDNumber(this);
    myLCDNumber->setGeometry(30,30,150,30); //設定位置大小
    myLCDNumber->setDigitCount(8);          //設定位數
    myTimer->start(1000);                   //以1000毫秒為周期起動定時器
    showTime();
    connect(myTimer,SIGNAL(timeout()),this,SLOT(showTime())); 
}

void Widget::showTime()
{
    QTime time = QTime::currentTime();
    QString text=time.toString("hh:mm:ss"); //設定顯示時間格式
    myLCDNumber->display(text);
}

main.cpp

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
 }

QTimer