10.QT-定时器

QObject定时器

  • 需要头文件#include <QTimerEvent>

 需要函数

int QObject::startTimer(int interval);
//启动定时器,并设置定时器间隔时间(单位ms),启动后返回该定时器ID号.

void QObject::timerEvent(QTimerEvent * event);
//定时器处理函数,需要用户来重写它,如果有多个定时器,可以通过QTimerEvent::timerId()来判断定时器ID处理

void killTimer(int id);
//通过定时器ID号来杀掉某个定时器

示例代码

Widget.h:

#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QObject>

class Widget : public QWidget
{
    Q_OBJECT

private:
virtual void  timerEvent( QTimerEvent * event );

public:
    explicit Widget(QWidget *parent = 0);
};

#endif // WIDGET_H

Widget.cpp:

#include "Widget.h"
#include <QDebug>
#include <QTimerEvent>

Widget::Widget(QWidget *parent) :
    QWidget(parent)
{
     int TimerID = startTimer(1000);        //设置1000ms为单位
     qDebug()<<"startTimerID : "<<TimerID;
}

void Widget::timerEvent(QTimerEvent * event )
{
    qDebug()<<"TimerID : "<<event->timerId();
}

QTimer定时器

 需要头文件#include <QTimer>  

QTimer类定时器支持单次触发和多次触发。

使用QTimer类定时器的步骤:

1. 创建一个QTimer定时器(示例)

QTimer *timer = new QTimer(this);

2. 连接timeout()信号与槽函数(示例)

 connect(timer, SIGNAL(timeout()), this, SLOT(time_handler()));

3.启动定时器,并设置间隔时间

timer->start (int msec);               //单位ms

4.停止定时器

timer->stop();

5.删除定时器

delete timer;

常用函数

void   setSingleShot(bool singleShot);
// 设置使能单次触发和多次触发,默认情况为多次触发

bool   isActive();
//判断定时器是否运行

bool  setInterval ( int msec );
//从新设置间隔时间

示例代码

Widget.h:

#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QObject>

class Widget : public QWidget
{
    Q_OBJECT

    QTimer *timer;

private slots:
     void  time_handler();

public:
    explicit Widget(QWidget *parent = 0);
};

#endif // WIDGET_H

Widget.cpp:

#include "Widget.h"
#include <QDebug>
#include <QTimer>

Widget::Widget(QWidget *parent) :
    QWidget(parent)
{
     QTimer *timer = new QTimer(this);
     connect(timer, SIGNAL(timeout()), this, SLOT(time_handler()));
     timer->start(1000);        //1000ms
}

void Widget::time_handler()
{
    qDebug()<<"Timer out";

}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏用户2442861的专栏

Qt学习之路_14(简易音乐播放器)

  这一节实现一个简易的音乐播放器,其音乐播放的核心功能是采用Qt支持的Phonon框架,该框架在前一篇博文Qt学习之路_13(简易俄罗斯方块) 中已经使用过...

19230
来自专栏DannyHoo的专栏

initialize

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

10410
来自专栏AndroidTv

View 动画 Animation 运行原理解析

这次想来梳理一下 View 动画也就是补间动画(ScaleAnimation, AlphaAnimation, TranslationAnimation...)...

40450
来自专栏技术总结

Swift封装-滑出式导航栏

36680
来自专栏前端说吧

Vue-自定义事件之—— 子组件修改父组件的值

37050
来自专栏hightopo

原 基于HTML5 Canvas 点击添加

16240
来自专栏ascii0x03的安全笔记

PySide——Python图形化界面入门教程(二)

PySide——Python图形化界面入门教程(二)   ——交互Widget和布局容器                ——Interactive Widge...

63180
来自专栏互联网杂技

React中的-- 数据流

简介 React的组件简单理解起来其实就是一个函数,这个函数会接收props和state作为参数,然后进行相应的逻辑处理,最终返回该组件的虚拟DOM展现。在Re...

38090
来自专栏塔奇克马敲代码

QDockWidget嵌套布局详解-实现Visual Studio布局

47760
来自专栏Linux驱动

2.QT-窗口组件(QWidget),QT坐标系统,初探消息处理(信号与槽)

本章主要内容如下: 1) 窗口组件(QWidget) 2) QT坐标系统 3) 初探消息处理(信号与槽) ---- 窗口组件(QWidget) 介绍 Qt以组件...

39640

扫码关注云+社区

领取腾讯云代金券