Qt编程详解--定时器

 Qt中的QTimer两种使用方式:

一、创建Timer类
        信号: void start(int msec) 成员函数,开启定时器并设置定时器的时间间隔  单位毫秒
                  时间到后会发出timeout信号,连接槽函数即可
                  直到调用stop()函数停止。

//widget.h
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTimer>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT
    QTimer* timer;
public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
public slots:
    void slots_timer(void);
private:
    Ui::Widget *ui;
};

#endif // WIDGET_H
//widget.cpp
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    timer = new QTimer;
    timer->start(1000);
    connect(timer,SIGNAL(timeout()),this,SLOT(slots_timer()));
}

Widget::~Widget()
{
    delete ui;
}

void Widget::slots_timer(void)
{
    qDebug("----时间到---");
}
//main.cpp
#include <QtGui/QApplication>
#include<QTextCodec>
#include "widget.h"

int main(int argc, char *argv[])
{
    QTextCodec* codec=QTextCodec::codecForName("utf-8");
    //告诉Qt本地系统的字符编码
    QTextCodec::setCodecForLocale(codec);

    //告诉Qt程序中所使用的字符串的字符编码
    QTextCodec::setCodecForCStrings(codec);

    //告诉Qt外部的字符编码
    QTextCodec::setCodecForTr(codec);

    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}

二、继承类
        事件:继承QTimer类,对该类进行扩展,并覆盖void timerEvent(QTimerEvent *e)事件
        void start(int msec) 成员函数,开启定时器并设置定时器的时间间隔
        时间到后会自动执行timerEvent函数
        注意:事件函数被执行就不会再产生timeout信号

//time.h
#ifndef TIMER_H
#define TIMER_H

#include <QTimer>

class Timer : public QTimer
{
    Q_OBJECT
public:
    explicit Timer(QObject *parent = 0);
    void timerEvent(QTimerEvent *e);
signals:
    
public slots:
   
};

#endif // TIMER_H
//widget.cpp
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this); 
}

Widget::~Widget()
{
    delete ui;
}

void Widget::slots_timer(void)
{
    qDebug("----时间到---");
}
//main.cpp
#include <QtGui/QApplication>
#include<QTextCodec>
#include "widget.h"
#include "timer.h"

int main(int argc, char *argv[])
{
    QTextCodec* codec=QTextCodec::codecForName("utf-8");
    //告诉Qt本地系统的字符编码
    QTextCodec::setCodecForLocale(codec);

    //告诉Qt程序中所使用的字符串的字符编码
    QTextCodec::setCodecForCStrings(codec);

    //告诉Qt外部的字符编码
    QTextCodec::setCodecForTr(codec);

    QApplication a(argc, argv);
    Widget w;
    w.show();

    //事件函数被执行就不会再产生timeout信号,也就不会调用 slots_timer() 函数
    Timer t;
    QObject::connect(&t,SIGNAL(timeout()),&w,SLOT(slots_timer()));
   
    t.start(1000);
    
    return a.exec();
}

成员函数

  1)void QTimer::singleShot(int msec,Qt::TimerType timeType,const QObject *receiver,const *member)//在规定的时间间隔调用函数

#include<QApplication>
#include<QTimer>
int main(int argc,char *argv[])
{
  QApplication app(argc,argv);
  QTimer::singleShot(10000,&app,SLOT(quit())); //在10分钟后,应用程序将关闭
  ........


  return app.exec();
}

2)void QTimer::start(int msec);
  启动或者重启服务器,msec为时间间隔,没有参数时,时间间隔为0.
3)void QTimer::stop();
  停止计时器
4)void QTimer::timeout();
  当定时器时间到时,信号被发射。
5)int QTimer::timerID()
  返回正在运行的计时器的ID号,否则返回为-1
 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值