定时器是用来处理周期性事件的一种对象,类似于硬件定时器。例如设置一个定时器的定时周期为 1000 毫秒,那么每 1000 毫秒就会发射定时器的 timeout() 信号,在信号关联的槽函数里就可以做相应的处理。
Qt 中的定时器类是 QTimer。QTimer 不是一个可见的界面组件,在 UI 设计器的组件面板里找不到它。图 1 中的实例程序实现了一个计时器的功能,就是计算定时器开始到停止持续的时间长度,计时器是 QTime 类。
图 1 定时器实例程序运行示意图
QTimer 主要的属性是 interval,是定时中断的周期,单位毫秒。QTimer 主要的信号是 timeout(),在定时中断时发射此信号,要想在定时中断里做出响应,这就需要编写 timeout() 信号的槽函数。下面是窗口类中增加的定义(省略了其他不相关的定义):
class Dialog : public QDialog
{
private:
QTimer *fTimer; //定时器
QTime fTimeCounter;//计时器
private slots:
void on_timer_timeout () ; //定时溢出处理槽函数
};
这里定义了一个定时器 fTimer,—个计时器 fTimeCounter。还定义了一个槽函数 on_timer_ timeout(),作为定时器的 timeout() 信号的响应槽函数。
需要在窗口类的构造函数里创建定时器,并进行信号与槽的关联。代码如下:
Dialog::Dialog(QWidget *par