QT 学习及实操 - QTimer 计时器的自动图片展示

文中知识点包含计时器、随机数生成器、显示图片等。
介绍 - QTimer
首先 #include <QTimer>
。
QTimer 是一个 QT 自带的计时器,可以在给定的秒数后发出信号。
- 声明变量:
QTimer timer;
- 声明指针并初始化:
QTimer *timer; timer = new QTimer;
(这个程序中我使用的这一种来声明) - 启动并且每
秒发送一次信号: timer->start(x);
- 启动并且
秒后发送信号后停止: timer->singleShot(x, receiver, &Slotfunction)
,其中receiver
和&Slotfunction
分别为接收者和发送信息到的槽函数。 - 停止:
timer->stop();
- 检查是否在工作:
timer->isActive()
,返回布尔值。
QTimer 连接信号和槽函数的一例:connect(timer, &QTimer::timeout, receiver, &Class::Slotfunction);
基于这个就可以写一个自动展示画面的工具了。
介绍 - 其它
当然还有一些其他东西才可以制作这个软件。
注意到图片是要展示在 Label 上的。要在 Label 上显示图片(该 Label 的对象名为 pictureDisplay
),可以使用 QImage 功能:
1 | QImage curImage; |
这里为了能够更好地迁移就将所有图片全部加进了 Resources 里面了。这个是极好的,路径查找也很方便。
由于一些神秘原因,我会展示一些随机的彩蛋图片。我希望在展示这些彩蛋图片的时候随机一个编号。这时就可以使用 QRandomGenerator 来生成随机数。
- 声明指针并初始化:
QRandomGenerator rand; rand = new QRandomGenerator;
- 设定基于当前时间的种子:
rand->seed(QTime::currentTime().msec());
- 随机
的一个整数: int num = rand->bounded(a, b+1);
(为什么是b+1
?)
哦哦,查了一下资料,我知道了:
quint32 QRandomGenerator::bounded(quint32 lowest, quint32 highest)
…
Generates one random 32-bit quantity in the range between lowest (inclusive) and highest (exclusive). The highest parameter must be greater than lowest.
…
也就是说,它生成一个随机数的范围本来就是
自动图片展示程序设计
UI
逻辑部分
首先,现在 widget.h
里面的 private
里面把你想定义的全局变量给定义了。
然后设置默认界面:
1 | Widget::Widget(QWidget *parent) |
然后写一个 void Widget::timerTimeout()
函数,为了能够在每一次收到信号之后切换图片。
1 | void Widget::timerTimeout(){ |
最后就是写槽函数了。这个是最好写的。
后记
今天下午 5 点过的时候,因为机房外面似乎是 VERTeX 被召唤过来了,外面电闪雷鸣,倾盆大雨,风都要把树吹倒了,于是我觉得我是一时半会我是出不去了,所以就在机房里面把这篇给学了。自我感觉良好。
是时候该回去了。
- Title: QT 学习及实操 - QTimer 计时器的自动图片展示
- Author: 11490DX
- Created at : 2025-07-29 20:14:53
- Updated at : 2025-07-29 20:50:35
- Link: https://11490dx.net/2025/07/29/QT-R70729/
- License: This work is licensed under CC BY-NC-SA 4.0.