Qt定时器使用示例
Qt 的定时器功能用起来还挺方便的,尤其是写一些需要周期执行的任务时,比如自动保存、轮询求、或者搞点动效啥的。这份源码就挺适合入门和实战结合看的,讲了三种定时器的用法,重点放在了QTimer
身上,毕竟它最灵活,用起来也顺手。代码示例清晰,编译环境是 Win10 + MinGW,基本不折腾就能跑起来。
Qt 的定时器有三种:QBasicTimer、QTimer、QEventLoop::Timer,日常开发用最多的就是QTimer。它的信号槽机制用起来真的省事,直接connect
绑定好timeout()
信号,start()
一开,定时任务就自己跑了。
源码里也贴心地演示了几个核心方法:start()
启动定时器、stop()
结束它,还有一个挺实用的singleShot()
,一次性定时任务搞起来就靠它了。写法也挺直观的,像下面这样:
#include
#include
class MyClass : public QObject {
Q_OBJECT
public:
MyClass(QObject *parent = nullptr) : QObject(parent) {
QTimer *timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, &MyClass::handleTimeout);
timer->start(1000); // 每 1 秒触发一次
}
private slots:
void handleTimeout() {
qDebug() << "定时器触发啦!";
}
};
你写 UI 时想定时刷新组件,或写逻辑层网络重试,用QTimer
都挺合适。唯一要注意的就是别忘了对象的生命周期,定时器和槽函数的对象得活着,不然容易崩。
如果你还不熟 Qt 的信号槽机制,推荐看看Qt 信号与槽机制:多槽连接,入门挺快的。
评论区