QTime QTimer
时间: 2025-01-15 21:00:36 浏览: 53
### QTime 和 QTimer 的区别及用法
#### QTime 的功能与应用场景
QTime 主要用于表示时间和处理时间计算。该类提供了多种方法来获取当前时间、测量时间段以及执行基本的时间运算。例如,可以通过 `currentTime()` 方法获得系统当前时间,并利用 `elapsed()` 或者 `msecsTo(QTime)` 来计算两个时刻之间的差异。
```cpp
// 获取当前时间并打印出来
QTime time = QTime::currentTime();
qDebug() << "Current Time:" << time.toString();
// 计算从某个固定点到现在经过了多少毫秒数
int elapsedMilliseconds = startTime.msecsTo(QTime::currentTime());
qDebug() << "Elapsed Milliseconds since start:" << elapsedMilliseconds;
```
[^3]
#### QTimer 的特性及其典型应用场合
相比之下,QTimer 是专为定时任务设计的一个工具,在图形界面编程中非常有用。通过设定间隔时间(单位为毫秒),可以让指定槽函数按照预定频率被调用,从而实现诸如动画效果刷新、周期性的数据查询等功能。下面展示了一个简单的例子说明如何启动和停止一个每秒钟触发一次事件的计时器:
```cpp
#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QVBoxLayout>
class MyWidget : public QWidget {
Q_OBJECT
public:
MyWidget(QWidget* parent = nullptr);
private slots:
void handleTimeout();
void onStartButtonClicked();
void onStopButtonClicked();
private:
QPushButton* m_startButton;
QPushButton* m_stopButton;
QTimer m_timer;
};
MyWidget::MyWidget(QWidget* parent): QWidget(parent),
m_startButton(new QPushButton("Start", this)),
m_stopButton (new QPushButton("Stop", this)) {
QVBoxLayout* layout = new QVBoxLayout(this);
connect(m_startButton, &QPushButton::clicked,
this , &MyWidget::onStartButtonClicked );
connect(m_stopButton , &QPushButton::clicked,
this , &MyWidget::onStopButtonClicked );
connect(&m_timer , &QTimer::timeout ,
this , &MyWidget::handleTimeout );
layout->addWidget(m_startButton);
layout->addWidget(m_stopButton);
}
void MyWidget::onStartButtonClicked(){
qDebug()<<"Starting Timer...";
m_timer.start(1000); // 启动计时器,每隔一秒发出超时信号
}
void MyWidget::onStopButtonClicked(){
qDebug()<<"Stopping Timer...";
m_timer.stop(); // 停止计时器
}
void MyWidget::handleTimeout(){
static int count=0;
++count;
qDebug()<<QString("Timer ticked %n times.",&count);
}
```
[^4]
阅读全文
相关推荐















