QT开发(七)—— 定时器事件,系统时间,随机数

我们来学习一些小知识点,分别是定时器的时间,系统时间,以及随机数,这里要说明一下,事件和信号是不一样的,不要混淆了,表面看起来都是为了触发某个功能,实际上你可以理解为时间他更偏向底层一些

一.定时器事件

我们其实学习过定时器

在这个小项目中,我们使用的是通过timeout信号去实现的定时触发,实际上,与上篇一样,我们QT也有对应的事件,我们来看下:

  • void timerEvent(QTimerEvent * event);

使用起来很简单

this->id = startTimer(1000);

我们直接调用startTimer来指定间隔时间,单位是ms,返回一个int,这是一个id

void MainWindow::timerEvent(QTimerEvent *event)
{
    if(event->timerId() == this->id)
    {
        QDebug() << "触发";
    }
}

这样,每隔1s就会触发一次,如果想停止这个定时器

killTimer(id);

现在发现这个id的用处了吧!

二.系统时间

系统时间的获取,可以这样来实现

QDateTime time = QDateTime::currentDateTime();
QString str = time.toString("yyyy-MM-dd hh:mm:ss dddd");
this->ui->tv_time->setText(str);

我们通过QDateTime 的静态函数currentDateTime获取到之后转换格式即可,但是这里获取的是一个静态值,如果我们想要实现一个钟表,就需要借助上面的计时器,也就是我们的定时器事件中应该这样去写:

void MainWindow::timerEvent(QTimerEvent *event)
{
    if(event->timerId() == this->id)
    {
        QDateTime time = QDateTime::currentDateTime();
        QString str = time.toString("yyyy-MM-dd hh:mm:ss dddd");
        this->ui->tv_time->setText(str);
    }
}

这样即可实现钟表

这里写图片描述

三.随机数

随机数就一个函数qrand(),他的公式为

  • qrand() % N (N后面接的是0 - N的区间)

我们来实现一个移动的小案例,用上面的例子来处理,我们随机移动这个时间控件

void MainWindow::timerEvent(QTimerEvent *event)
{
    if(event->timerId() == this->id)
    {
        QDateTime time = QDateTime::currentDateTime();
        QString str = time.toString("yyyy-MM-dd hh:mm:ss dddd");
        this->ui->tv_time->setText(str);
        int a = qrand()%300;
        this->ui->tv_time->move(a,a);
    }
}

这样就可以达到效果了

这里写图片描述

有兴趣的可以加群:690351511

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘某人程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值