定时器的使用和生成随机数函数的编写

参考链接:

        QT中定时器的使用方法 - 菜头大大 - 博客园

        qt定时器 - 知乎

        第10篇 基础(十)Qt定时器和随机数 · Qt 快速入门系列教程

目录

一、定时器

        1、定时器事件

        2、信号和槽

二、随机数


自我实践:

MainWindow.h文件

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    int randomNum(int max);//随机函数
public slots:
    void onTimeout();//槽函数

private:
    Ui::MainWindow *ui;

    QTimer *timer;//定时器
};

MainWindow.cpp文件

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

    //定义定时器
    timer = new QTimer(this);
    //设置3秒执行一次
    timer->setInterval(3000);
    //将定时器信号与对应的槽函数连接
    connect(timer, SIGNAL(timeout()), this, SLOT(onTimeout()));
    //启动定时器
    timer->start();
}

void MainWindow::onTimeout()
{
    //关闭定时器,防止中断中发生中断
    timer->stop();
    int i = 0;
    //获取当前时间
    QTime curTime = QTime ::currentTime();
    //输出随机数
    qDebug() << __LINE__ << randomNum(3) << i++;
    //获取当前时间--分、秒
    qDebug() << __LINE__ << curTime.minute() << curTime.second();
    //启动定时器
    timer->start();
}

//获取随机数
int MainWindow::randomNum(int max)
{
    //获取当前时间(静态)
    QTime m_stime1 = QTime(0, 0, 0);
    //获取当前时间(动态)
    QTime time2 = QTime::currentTime();

    //获取两者毫秒数生成随机种子
    uint time = time2.msecsTo(m_stime1);
    qDebug () << "time" << time;//查看种子
    //设置随机数种子
    qsrand(time);

    //生成随机数
    int randNum = qrand() % max;
    return randNum;
}

结果:

有上述可知,定时器和随机函数基本实现了。但是最近我发现了另一条链接讲的比较清晰,所以来补充一些理论知识(上述参考链接第三个)

一、定时器

        Qt有两种方法来使用定时器

        定时器事件信号和槽

        如果是使用了多个定时器最好使用定时器事件来处理。

        1、定时器事件

                基类:QWidget

                重写函数:void timerEvent(QTimerEvent *);

                开启定时器:startTimer(毫秒)

                如果开启了多个定时器,判断是哪个定时器:event.timerId()

                例如:           

if (event->timerId() == id1) {}

        这里先使用timerId()函数返回了溢出的定时器id,然后给根据id判断哪个定时器溢出了,从而进行对应的处理。

        2、信号和槽

        这个就是我开头使用的方法了

        1、在头文件中添加一个私有槽声明

        2、然后在构造函数中new一个定时器

        3、设置信号和槽,将定时器和对应事件相关联

        4、start()启动定时器

二、随机数

        Qt中使用qrand() 和 qsrand()两个函数实现。

        qsrand()生成随机数

        qrand() 控制范围----0-9十位随机数就%10,100以内随机数%100以此类推。

        

        且qrand()函数要设置初值,否则就不随机。

        上面我也使用了时间差来生成随机数。

就这样啦结束!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值