加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Qt分析:Qt中的两种定时器

(2015-09-01 09:56:36)
分类: Qt
Qt有两种定时器,一种是QObject类的定时器,另一种是QTimer类的定时器。

(1)QObject类的定时器

QObject类提供了一个基本的定时器,通过函数startTimer()来启动,通过killTimer()来结束,通过QTimerEvent来处理定时器事件。


int startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer);


void killTimer(int id);


void QObject::timerEvent(QTimerEvent * event);



startTimer(int interval)启动一个时间间隔为interval毫秒的定时器,返回一个定时器标识符,如果未能启动成功,则返回0。

该定时器只能使用killTime()来杀死,killTimer(int id)通过定时器标识符来杀死定时器。

如果有多个定时器,可以通过QTimerEvent::timerId()来获取已经启动的定时器标识符。


(2)QTimer类的定时器

QTimer类定时器是QObject类定时器的扩展版或者说升级版,因为它可以提供更多的功能。比如说,它支持单次触发和多次触发。

使用QTimer类定时器的步骤:

(1)创建一个QTimer定时器实例:QTimer *timer = new QTimer(this);
(2)连接超时信号与槽:connect(timer, SIGNAL(timeout()), this, SLOT(testFunc()));
(3)启动定时器start();
(4)适时关闭定时器:stop();
(5)删除定时器实例:delete timer;


公共函数:

int               interval() const                                            获得定时器时间间隔

bool              isActive() const                                         获得定时器激活状态

bool              isSingleShot() const                                 获得单次触发使能状态

int               remainingTime() const                              获得距离触发定时器事件的剩余时间

void              setInterval(int msec)                                设置定时器时间间隔

void              setSingleShot(bool singleShot)              设置使能/禁用单次触发

void              setTimerType(Qt::TimerType atype)        设置定时器类型

int               timerId() const                                           获得定时器标识符

Qt::TimerType     timerType() const                             获得定时器类型


公共槽函数:

void     start(int msec)                             启动定时时间间隔为msec毫秒的定时器
void     start()                                           启动定时器
void     stop()                                           暂停定时器


信号:
void     timeout()                                    超时

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有