QTimer
是 Qt 框架中的一个类,它提供了重复或单次的时间间隔触发。以下是 QTimer
的一些常用成员函数及其简要介绍:
构造函数和析构函数
QTimer(QObject *parent = nullptr)
: 构造一个计时器对象,可以指定一个父对象。~QTimer()
: 析构函数,当计时器对象被销毁时调用。
计时器控制
void start(int interval = 0)
: 启动计时器。如果计时器已经运行,则重新启动它。可以指定时间间隔(以毫秒为单位),如果为0,则使用之前设置的时间间隔。void stop()
: 停止计时器。void setInterval(int interval)
: 设置计时器的时间间隔(以毫秒为单位)。int interval() const
: 返回当前设置的时间间隔。bool isActive() const
: 如果计时器正在运行,则返回true
;否则返回false
。
单次计时器
void setSingleShot(bool singleShot)
: 如果singleShot
为true
,则计时器只会在指定的间隔后触发一次;否则,它将重复触发。bool isSingleShot() const
: 如果计时器设置为单次触发,则返回true
。
计时器信号
void timeout()
: 当计时器的时间间隔到达时,这个信号被发射。
其他功能
void setTimerType(Qt::TimerType timerType)
: 设置计时器的类型(例如,Qt::PreciseTimer
或Qt::CoarseTimer
)。Qt::TimerType timerType() const
: 返回计时器的类型。
以下是如何使用这些函数的一个简单示例:
#include <QCoreApplication>
#include <QTimer>
int main(int argc, char *argv[]) {
QCoreApplication a(argc, argv);
QTimer timer;
// 设置时间间隔为2000毫秒(2秒)
timer.setInterval(2000);
// 设置为单次触发
timer.setSingleShot(true);
// 连接timeout信号到一个槽函数
QObject::connect(&timer, &QTimer::timeout, [&]() {
qDebug() << "Timer triggered!";
// 停止计时器
timer.stop();
});
// 启动计时器
timer.start();
return a.exec();
}
在这个例子中,我们创建了一个 QTimer
对象,设置了2秒的时间间隔,并设置为单次触发。然后,我们连接了 timeout
信号到一个 lambda 函数,该函数将在计时器触发时打印一条消息并停止计时器。最后,我们启动了计时器并进入应用程序的事件循环。