48黑马QT笔记之QTimer以及QTimer与QTime的区别

48黑马QT笔记之QTimer以及QTimer与QTime的区别

1 QTimer(定时器):
1)使用QTimer的思想:定义一个定时器QTimer Timer,一般利用按钮开启定时器,代码为Timer.start(1000);开启后每1000毫秒触发一次timeout信号,这样我们就可以在想要的时间做某些事情。关闭时也一般用按钮关闭,代码为Timer.stop()。

2 定时器QTimer的例子:
1)头文件:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QTimer>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

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

private slots:
    void on_buttonStart_clicked();

    void on_buttonStop_clicked();

private:
    Ui::Widget *ui;
    QTimer Timer;      //定时器对象
};

#endif // WIDGET_H

2)实现文件.cpp:

#include "widget.h"
#include "ui_widget.h"

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

    connect(&Timer,&QTimer::timeout,
            [=]()
    {
        static int i=0;
        i++;
        ui->lcdNumber->display(i);       //是ui调用,不是定时器Timer调用

    }



            );
}

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

void Widget::on_buttonStart_clicked()
{
    //启动定时器
    //每隔1000ms,定时器myTimer自动触发timeout()
    if(Timer.isActive()==false)
    {
        Timer.start(1000);
    }

}

void Widget::on_buttonStop_clicked()
{
    //如果开启定时器就关闭
    if(Timer.isActive()==true)
    {
        Timer.stop();
    }
}

3 QTimer与QTime的区别:
1)QTimer定时器需要定义对象。定时器开启后,规定时间内不断触发的是timeout信号,不想触发就关闭定时器,一般QTimer的开启关闭都是配合按钮来进行。
相关代码操作:

//1 定义定时器对象 QTimer Timer;      
//2 定时器开启     Timer.start(1000);
//3 触发的是timeout信号
//4 关闭定时器     Timer.stop();

2)QTime计时器不需要自己定义对象,它返回一个文件描述符,只需要用int去接收即可。计时器开启后,规定时间内不断触发的是计时器事件,不想触发就关闭计时器。QTime的开启关闭也经常用按钮,看个人习惯。但个人建议可以的话,都尽量使用QTimer,不用重写事件函数嘛。
相关代码操作:

//1 计时器返回值相当于文件描述符  int TimeId1;
//2 计时器开启                  TimerId1=(this->)startTimer(1000); 
//3 触发的是timerEvent()事件函数 (开启后内部自动触发)
//4 关闭计时器                  killTimer(TimerId1);       

4 QTime的使用例子可以看day04的猜数字项目

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值