欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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"超时!";
}

相关标签: QTimer 定时器