qt-日期时间

系统时间

QDateTime dateTime(QDateTime::currentDateTime());
QString qStr = dateTime.toString("yyyy-MM-dd hh:mm::ss ddd");

Timer

在Qt中使用定时器有两种方法,QTimer类的定时器和基于QObiect类的定时器。定时器的精确性依赖于操作系统和硬件(主要是操作系统),大多数平台支持20ms的精确度,实测Win10的精度基本就是20毫秒左右(硬件高配)。

Qtimer类的定时器

在timerUpDate函数中编写定时器的处理函数

#include <QTimer>

QTimer* timer = new QTimer(this); //定时器的常规用法
connect(timer,SIGNAL(timeout()),this,SLOT(timerUpDate()));
timer->start(1000);

killTimer(m_timerAudio);
m_timerAudio = startTimer(g_audio_interval);


// 单次定时
QTimer::singleShot

QObject类的定时器

QObject类提供的定时器功能相关的成员函数有:startTimer()、timeEvent()、killTimer()
调用 startTimer启动一个定时器,并返回定时器id。如果启动失败,返回0.
定时器每隔interval 毫秒就会启动一次,直到调用killTimer(). 如果interval=0,当没有其他系统时间发生时,会调用一次。
当定时器发生时,会调用timerEvent(QTimerEvent *event).如果多个定时器在运行,可用通过timeId()来区分。
虚函数timerEvent()被重载来实现用户的超时事件处理函数。如果有多个定时器在运行,QTimerEvent::timerId() 被用来查找指定定时器,并对其进行操作。当定时器事件发生时,虚函数timerEvent()随着QTimerEvent事件参数类一起被调用,重载这个函数可以获得定时器事件。

int QObject::startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer)
virtual voidQObject::timerEvent(QTimerEvent *event);