QTimer计时器

在QT5中,我们有一个专门的计时器类,QTimer,我们可以利用它完成一些关于定时的操作,实例如下:

#include <QTimer>

QTimer* timer = new QTimer();
timer->start(value);           //以毫秒为单位
QObject::connect(timer,&QTimer::timeout,receiver,&slot);    //时间结束,发送timeout信号

void slot()
{
       timer->stop();                 //停止计时器
       //do something  
}

在我们定时时间结束的时候,我们需要手动停止timer,不然他会不断发送出timeout这个信号,同时,我们需要注意,在做连接函数之前,我们需要存在这个timer的实例,不然会导致程序崩溃,当然我们也可以不需要实例化timer,而是使用QTimer的静态方法,直接起动定时,一下是QT文档中的一个例子:

#include <QApplication>
#include <QTimer>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QTimer::singleShot(600000, &app, SLOT(quit()));    //使用静态方法,在600秒之后退出程序
    ...
    return app.exec();
}

我们可以在一个程序之中使用多个timer,每一个timer都是有着自己独自的timerId,和window进程的pid类似,我们可以利用timerEvent来处理多个timer:

void timerEvent(QTimerEvent* event)
{
        if(event->timerId() == timerId)            //使用if来判断是那个timer发出的信号        
        {
                // do something 
        }  
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,188评论 19 139
  • Qt是属于一个跨平台的GUI开发软件,支持的平台有Unix、Linux、Windows/WinCE、IOS等。 Q...
    一叶之界阅读 12,564评论 0 17
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,629评论 25 709
  • 前言 关于Qt的学习道路需要不断日积月累,下面有一些学习资料提供给大家:Qt官网、编码风格、GitHub & Th...
    YBshone阅读 11,248评论 3 95
  • 两个,一个是火云译客,可以字数统计,word 和Excel 除了PPT以外 一个是Omegal, 需要把文档导入,...
    小小朵的春天阅读 2,372评论 0 0

友情链接更多精彩内容