Qt 之定时器(QTimer)详解
程序员文章站
2024-03-22 18:47:16
...
Qt 之定时器(QTimer)详解
简述
QTimer类提供了定时器信号和单触发定时器。
它在内部使用定时器事件来提供更通用的定时器。QTimer很容易使用:创建一个QTimer,使用start()来开始并且把它的timeout()连接到适当的槽。当这段时间过去了,它将会发射timeout()信号。
注意当QTimer的父对象被销毁时,它也会被自动销毁。
代码测试(内有详细注释)
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_timer = new QTimer;
//connect(m_timer,SIGNAL(timeout()),this,SLOT(slot_timeOut()));
m_timer->start(10000);
//****************QTimer属性***************************
//单次触发下,定时器超时后是不活跃的;非单次触发下为活跃。
//当然,不论什么条件,stop()后自然为不活跃
qDebug()<<u8"①是否活跃:"<<m_timer->isActive();
//当前时间间隔为10000毫秒 = 10秒
qDebug()<<u8"②时间间隔:"<<m_timer->interval();
//非单次触发会造成定时器每10秒一个间隔不断循环
m_timer->setSingleShot(false);
qDebug()<<u8"③是否单次触发:"<<m_timer->isSingleShot();
qDebug()<<u8"④定时器类型(针对不同平台的精确度):"<<m_timer->timerType();
qDebug()<<u8"⑥剩余时间";
//QTimer为单次触发定时器提供了一个静态函数
QTimer::singleShot(10000, this, SLOT(slot_timeOut()));
}
MainWindow::~MainWindow()
{
delete ui;
}
//超时处理
void MainWindow::slot_timeOut()
{
//qDebug()<<u8"是否活跃:"<<m_timer->isActive();
qDebug()<<u8"超时!";
}