【QT学习】----事件系统(二:定时器事件与随机数)

首先区别三个类:
QTimerEvent类: 描述一个定时器事件
QTimer类: 是一个定时器类(编程中大多使用这个设定定时器)
QTime类: 是一个时间类,主要用于对时间的操作,他提供了大量的函数便于用户对时间进行转换和计算。

开启一个定时器:

int QObject::startTimer(int interval)
参数说明:
返回值:一个整型编号,代表这个定时器
参数interval:一个以毫秒为单位的整数,表明设定的时间。

QTimer类的使用分为三步:创建对象、连接signal和slot函数、start()

1.  QTimer *timer = new QTimer(this);
2.  connect(timer, &SIGNAL(timeout(), this, SLOT(update()));
3.   timer->start(1000);

其中,SIGNAL(timeout())表示:每当计时结束,计时器归零并重新计时,并发送一个信号激活slot函数。溢出信号
而 timer->start(1000);当中的1000,就是1000毫秒的意思,表示每次timeout的时间间隔是1000ms
QTime Class
QTime 提供时间函数给用户使用,它和QTimer的区别就和手表与秒表的区别一样。

举个栗子:
在Widget上添加一个LCD Number部件,显示当前时间:

widget.h文件
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTime>
#include <QTimerEvent>
namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
    
private slots:
    void timeUpdate();//槽函数。及时结束之后应该做什么

private:
    Ui::Widget *ui;

};

#endif // WIDGET_H
widget.cpp文件
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QTime>
#include <QTimer>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    QTimer *timer = new QTimer(this);	//创建定时器对象
    connect(timer,&QTimer::timeout, this, &Widget::timeUpdate);//定时器溢出信号和槽函数关联
    timer->start(1000); //设置溢出时间,并且启动定时器
}

Widget::~Widget()
{
    delete ui;
}
void Widget::timeUpdate()   //定时器溢出处理
{
    QTime time = QTime::currentTime();  //获取当前时间
    QString text = time.toString("hh:mm");  //转换为字符串
    if(time.second()%2 == 0)    //每隔一秒。:变为空格。(使得:展示闪烁的效果)
        text[2] = ' ';
    ui->lcdNumber->display(text);   //将字符串显示到lcd Number上

}

在这里插入图片描述

随机数:
如何产生随机数:
使用qsrand()qrand() 两个函数。

qsrand(QTime(0,0,0).secsTo::currentTime());//表示从零点到当前时刻所经过的秒数。防止产生相同的随机数
 
int  num = qrand()%100;//产生一个100以内的随机数

qsrand()是为了使每次运行程序产生的随机值都不一样。
比如:
如果不使用qsrand()函数,第一次运行程序产生的随机值是5, 9, 4, 1,7,0…
然后第二次,第三次,往后每一次产生的随机数都是5,9,4,1,7,0…

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值