Home · All Classes · Modules · QSS HELP · QSS 案例 · VER007 HOME |
该QTimer的类提供了重复和单触发定时器。More...
继承QObject。
该QTimer的类提供了重复和单触发定时器。
该QTimer的类提供了一个高层次的编程接口,用于定时器。要使用它,创建一个QTimer的,其连接timeout( )信号到相应的插槽,和呼叫start( ) 。从那时起,它将发出timeout()信号以恒定的间隔。
例如对于一个一秒钟( 1000毫秒)计时器(从Analog Clock为例):
QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(update())); timer->start(1000);
从这时起,在update()槽被调用每一秒。
你可以通过调用setSingleShot (真)设置一个计时器超时只有一次。您也可以使用静态QTimer.singleShot( )函数在指定的时间间隔后调用一个槽:
QTimer.singleShot(200, this, SLOT(updateCaption()));
在多线程应用程序中,您可以在具有一个事件循环的任何线程使用QTimer的。要开始从非GUI线程,使用一个事件循环QThread.exec( ) 。 Qt使用定时器的thread affinity以确定哪个线程会放出timeout()信号。正因为如此,你必须启动和停止在其线程计时器,它是不可能的,开始从另一个线程的计时器。
作为一个特例,为0的超时QTimer的将超时只要在窗口系统的事件队列中的所有事件都被处理。这可以用来做繁重的工作,同时提供迅速的用户界面:
QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(processOneThing())); timer->start();
processOneThing()将从此被重复调用。它应该写在这样一种方式,它总是很快返回(通常在处理一个数据项之后),这样Qt可以把事件传送给窗口部件,一旦它已经完成了它的一切工作停止计时器。这是实现GUI应用程序中繁重的工作的传统方式,多线程,现在越来越多的平台变得可用,而我们预期的零毫秒QTimers将逐渐被取代QThread秒。
定时器永不超时早于指定超时值,他们不能保证超时在指定的精确值。在许多情况下,它们可能会超时迟到了一段时间,它取决于该系统定时器的精度。
定时器的精度取决于底层操作系统和硬件。大多数平台支持1毫秒的分辨率,虽然计时器的精度不会在许多实际情况下等于该决议。
如果Qt是不能传送定时器触发的请求数量,它会悄悄地丢弃一些。
另一种使用QTimer的方法是调用QObject.startTimer( )为对象,并重新实现QObject.timerEvent在你的类()事件处理程序(它必须继承QObject) 。其缺点是timerEvent( )不支持这种高层次的特点单触发定时器或信号。
另一个替代使用QTimer的方法是使用QBasicTimer。它通常比使用较不笨重QObject.startTimer( )直接。看Timers对于所有三种方法的概述。
某些操作系统会限制定时器,可用于数; Qt会试着解决这些限制。
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
构造一个定时器与给定parent。
一个给定的时间间隔后这个静态函数调用一个插槽。
这是非常方便的使用此功能,因为您不需要打扰了timerEvent或者创建本地QTimer对象。
例如:
#include <QApplication> #include <QTimer> int main(int argc, char *argv[]) { QApplication app(argc, argv); QTimer.singleShot(600000, &app, SLOT(quit())); ... return app.exec(); }
此示例程序10分钟( 600,000毫秒)后自动终止。
该receiver为接收对象和member是槽。的时间间隔是msec毫秒。
Note:这个功能是reentrant。
See also setSingleShot()和start( ) 。
这种方法也是一个Qt槽与C + +的签名void start(int)。
开始或重新开始的超时间隔定时器msec毫秒。
如果计时器已经在运行,这将是stopped并重新启动。
If singleShot诚然,定时器将只能激活一次。
这种方法也是一个Qt槽与C + +的签名void start()。
这个函数的重载start( ) 。
启动或重新启动在指定的超时定时器interval。
如果计时器已经在运行,这将是stopped并重新启动。
If singleShot诚然,定时器将只能激活一次。
这种方法也是一个Qt槽与C + +的签名void stop()。
停止计时器。
See also start( ) 。
从重新实现QObject.timerEvent( ) 。
返回如果计时器正在运行的定时器的ID ,否则返回-1 。
这是该信号的默认超载。
这个信号被发射时,定时器超时。
See also interval,start()和stop( ) 。
PyQt 4.10.3 for X11 | Copyright © Riverbank Computing Ltd and Nokia 2012 | Qt 4.8.5 |