QT 定时器使用事项

情景

有一种特殊情况,一旦窗口系统事件队列中的所有事件都已经被处理完,一个定时为0的QTimer就会到时间了。这也可以用来当提供迅速的用户界面时来做比较繁重的工作。(优点)

QT app启动后不做任何操作,程序CPU占比已经达到90%以上(缺点),后发现APP不启动的情况下,SDK也占用了接近50%的CPU使用率.

示例如下:

QTimer* pTimer = new QTimer();
connect(pTimer,SIGNAL(timeout()), this, SLOT(OnTimeout));
pTimter->start();

原因

    定时器启动时不设置间隔时间,执行定时任务会耗费大量的CPU使用率,设置时间间隔后,cpu使用率在1%左右,此处定时器使用需格外注意

    一些操作系统限制可能用到的定时器的数量,Qt会尽力在限制范围内工作。

补充

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

不设置的话默认为0,时间间隔为0的定时器将在窗口系统的事件队列中的所有事件处理完毕后立即超时

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

如果计时器正在运行,返回true;否则返回false。

Qt提供的public槽函数:

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

Qt提供的信号

void timeout() 超时

QT静态函数singleShot()

使用这个函数非常方便,因为不需要使用timerEvent或创建本地QTimer对象,这个静态函数会在给定的时间间隔后调用一个槽。

例:这个示例程序在10分钟(60万毫秒)后自动终止,到了定时间隔之后只发送一次信号,槽函数只处理一次。

QTimer::singleShot(600000, this, SLOT(quit()));

你可能感兴趣的:(QT,qt,开发语言,c++)