zoukankan      html  css  js  c++  java
  • 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";
    
    }
  • 相关阅读:
    zookeeper集群 新手安装指南
    每天进步一点点--------归并算法
    JAVA读入流的相关常用方法
    解决maven 下载 hadoop-client 客户端 报错的问题
    Java中的阻塞队列
    Java多线程-工具篇-BlockingQueue
    Netty是什么?
    JAVA类加载和反射介绍
    博客迁移通知:本博客已迁移至 itoolsoft.org
    如何在Windows 10中重置和注销Linux子系统
  • 原文地址:https://www.cnblogs.com/lifexy/p/8950880.html
Copyright © 2011-2022 走看看