QT 定时器之QTimer

//mydialog.h
#ifndef MYDIALOG_H
#define MYDIALOG_H
#include <QDialog>
class QLCDNumber;
class QTimer;
class MyDialog : public QDialog
{
  Q_OBJECT
public:
  explicit MyDialog(QWidget *parent = 0);
signals:
public slots:
  void onTimerOut();
private:
  QLCDNumber *lcd;
  QTimer *timer;
};
#endif // MYDIALOG_H
//mydialog.cpp
#include "mydialog.h"
#include <QtGui/QLCDNumber>
#include <QtGui/QVBoxLayout>
#include <QTimer>
#include <QTime>
MyDialog::MyDialog(QWidget *parent) :
  QDialog(parent)
{
  //新建一个QLCDNumber对象
  lcd = new QLCDNumber();
  //设置晶体管控件QLCDNumber能显示的位数
  lcd->setDigitCount(10);
  //设置显示的模式为十进制
  lcd->setMode(QLCDNumber::Dec);
  //设置显示方式
  lcd->setSegmentStyle(QLCDNumber::Flat);
 
  //新建一个QTimer对象
  timer = new QTimer();
  //设置定时器每个多少毫秒发送一个timeout()信号
  timer->setInterval(1000);
  //启动定时器
  timer->start();
 
  QVBoxLayout *layout = new QVBoxLayout();
  layout->addWidget(lcd);
  //信号和槽
  connect(timer, SIGNAL(timeout()), this, SLOT(onTimerOut()));
 
  //重新设置窗口的布局管理器
  this->setLayout(layout);
  //重新设置窗口的大小
  this->resize(200, 100);
  //重新设置窗口的标题
  this->setWindowTitle("QTimerDemo");
}
 
void MyDialog::onTimerOut()
{
  //获取系统当前时间
  QTime time = QTime::currentTime();
  //设置晶体管控件QLCDNumber上显示的内容
  lcd->display(time.toString("hh:mm:ss"));
}
//main.cpp
#include <QtGui/QApplication>
#include "mydialog.h"
int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  MyDialog dialog;
  dialog.show();
  return a.exec();
}

原文地址:https://www.cnblogs.com/zzzsj/p/15771452.html