`
sai_ruby
  • 浏览: 22764 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

QTimer类(转)

 
阅读更多
详细描述

QTimer类提供了定时器信号和单触发定时器。
它在内部使用定时器事件来提供更通用的定时器。QTimer很容易使用:创建一个QTimer,使用start()来开始并且把它的timeout()连接到适当的槽。当这段时间过去了,它将会发射timeout()信号。

注意当QTimer的父对象被销毁时,它也会被自动销毁。

实例:

        QTimer *timer = new QTimer( myObject );
        connect( timer, SIGNAL(timeout()), myObject, SLOT(timerDone()) );
        timer->start( 2000, TRUE ); // 2秒单触发定时器
   
你也可以使用静态的singleShot()函数来创建单触发定时器。

作为一个特殊情况,一旦窗口系统事件队列中的所有事件都已经被处理完,一个定时为0的QTimer就会到时间了。

这也可以用来当提供迅速的用户界面时来做比较繁重的工作。

        QTimer *t = new QTimer( myObject );
        connect( t, SIGNAL(timeout()), SLOT(processOneThing()) );
        t->start( 0, FALSE );
   
myObject->processOneThing()将会被重复调用并且应该很快返回(通常在处理一个数据项之后),这样Qt可以把事件传送给窗口部件并且一旦它完成这个工作就停止这个定时器。这是在图形用户界面应用程序中实现繁重的工作的一个典型方法,现在多线程可以在越来越多的平台上使用,并且我们希望无效事件最终被线程替代。

注意QTimer的精确度依赖于底下的操作系统和硬件。绝大多数平台支持20毫秒的精确度,一些平台可以提供更高的。如果Qt不能传送定时器触发所要求的数量,它将会默默地抛弃一些。

另一个使用QTimer的方法是为你的对象调用QObject::startTimer()和在你的类中(当然必须继承QObject)重新实现QObject::timerEvent()事件处理器。缺点是timerEvent()不支持像单触发定时器或信号那样的高级水平。

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

也可以参考事件类和时间和日期。

成员函数文档

QTimer::QTimer ( QObject * parent = 0, const char * name = 0 )

构造一个被称作name,父对象为parent的定时器。
注意这个父对象的析构函数将会销毁这个定时器对象。

QTimer::~QTimer ()

销毁这个定时器。
void QTimer::changeInterval ( int msec )

改变定时间隔为msec毫秒。
如果这个定时器信号是运行的,它将会被停止并且重新开始,否则它将会被开始。

也可以参考start()和isActive()。

bool QTimer::isActive () const

如果定时器正在运行,返回真,否则返回假。


void QTimer::singleShot ( int msec, QObject * receiver, const char * member ) [静态]

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

实例:

        #include <qapplication.h>
        #include <qtimer.h>

        int main( int argc, char **argv )
        {
            QApplication a( argc, argv );
            QTimer::singleShot( 10*60*1000, &a, SLOT(quit()) );
                ... // 创建并且显示你的窗口部件
            return a.exec();
        }
   
这个示例程序会自动在10分钟之后终止(也就是600000毫秒)。

receiver是正在接收的对象并且member是一个槽。时间间隔是msec。

int QTimer::start ( int msec, bool sshot = FALSE )

开始一个msec毫秒定时的定时器。
如果sshot为真,这个定时器将只会被激活一次,否则它将会持续到它被停止。

任何正在运行的定时器将被停止。

也可以参考singleShot()、stop()、changeInterval()和isActive()。

实例:aclock/aclock.cpp、dirview/dirview.cpp、forever/forever.cpp、hello/hello.cpp、t11/cannon.cpp和t13/cannon.cpp。

void QTimer::stop ()

停止这个定时器。
也可以参考start()。

实例:dirview/dirview.cpp、t11/cannon.cpp、t12/cannon.cpp和t13/cannon.cpp。

void QTimer::timeout () [信号]

当定时器被激活时,这个信号被发射。
分享到:
评论

相关推荐

    QTimer与QTime实现电子时钟

    * 使用QTimer类时,需要在头文件中包含QTimer类。 * 需要在构造函数中创建QTimer对象,并设置其timerType为Qt::PreciseTimer以确保精度。 * 使用start()函数启动定时器,参数为间隔时间(毫秒)。 * 使用connect()...

    Qt基础开发之Qt多线程类QThread与Qt定时器类QTimer的详细方法与实例

    在本文中,我们将深入探讨Qt的QThread类和QTimer类,以及如何在实际开发中运用它们。 首先,让我们来看看QThread类。在Qt中,QThread是用来管理线程的对象,它提供了对线程的高级封装。当一个QThread对象被创建并...

    qt_project9_pixmapCut.zip_Qpixmap Qtimer_qt 屏幕

    这个程序涉及到的关键技术是QPixmap和QTimer,它们都是Qt库中的核心组件,对于Qt初学者来说是必须要掌握的基础知识点。 **QPixmap**: 是Qt图形系统中的一个重要类,用于处理像素级别的图像数据。QPixmap提供了丰富...

    QT和C++实现CoinFlip,也就是翻转金币的小游戏,按照B站上的教程,自己一个代码一个代码敲的

    2)QTimer的使用,项目中多次使用了QTimer,算是比较熟悉了 3)QPainter类的使用 4)QPropertyAnimation类设置动画 5)QSound类设置声音 6)QPixmap类的使用 个人感觉,跟着项目学习是掌握技术最快的方法。

    QT界面旋转切换Widget

    4. 使用QTimer来控制动画的间隔,以实现平滑的旋转效果。 5. 在设计旋转角度时,注意保持用户界面的可读性和易用性,避免旋转角度过大导致内容难以辨认。 最后,压缩包中的"Rotate正式版"很可能是一个包含了实现这...

    QT实现的计时器 Timer Countdown

    QTimer是QT提供的一个信号/槽机制驱动的定时器类,它可以周期性地触发信号,进而执行相应的槽函数。计时器有两种类型:单次触发和周期触发。在这个倒计时计时器中,我们主要使用单次触发模式,即当倒计时结束时触发...

    qt 时钟特效动画 翻页 划滑动 翻转

    在翻页过程中,可能运用了旋转和透明度的变化,通过时间槽(QTimer)和状态机(QState/QStateMachine)来控制动画的节奏和顺序,以达到流畅的翻页效果。 滑动特效通常涉及到视图的滚动。QT提供了scroll()函数,可以...

    基于QT5的一个窗口旋转小程序

    5. 可能会使用Qt的定时器(QTimer)来实现周期性的旋转效果。 项目中的"myWidgetItem"可能是自定义的QWidget类实例,或者是QGraphicsItem的子类,用于在窗口中展示特定的UI元素。它可能包含了特定的属性和方法,以...

    QT桌面实时时钟圆盘旋转源代码

    在该源代码中,开发者可能利用了Qt的QTimer类来实现时间的实时更新,QTimer可以周期性地触发特定事件,使得时钟指针能够每秒转动适当的角度以模拟实际时钟的运动。此外,可能使用了QPainter和QPaintEvent来绘制时钟...

    Qt下的时钟小程序

    `QTimer`是Qt提供的一种计时器类,它可以用于在特定的时间间隔后触发信号,这对于实现动态更新的应用如时钟至关重要。在时钟小程序中,我们将利用`QTimer`来定期更新时钟的显示,使指针能够持续转动。 接着,我们...

    Qt实现动态时钟 翻转 滑动 翻页

    为了实时更新时间,可以使用QTimer类,定期触发一个信号,这个信号可以连接到更新时钟显示的槽函数。确保定时器的精度足够高,以实现平滑的动画效果。 最后,记得处理好用户的交互,比如点击或触摸事件,以便用户...

    clock(有时分秒针)

    接着,我们关注QTimer类,它是QT中的定时器,用于定期触发某个事件,例如在我们的时钟应用中,我们需要每秒更新一次秒针的位置。通过连接QTimer的timeout信号到相应的槽函数,我们可以确保秒针每隔一秒转动一定的...

    Qt自绘控件-旋转的时钟

    `QTimer`是Qt的定时器类,可以周期性地触发一个信号。在旋转的时钟中,我们可以设置一个定时器,每隔一定时间(比如一秒)触发`timeout()`信号,然后在槽函数中更新时钟的时间并调用`update()`或`repaint()`来重绘...

    Qt使用之简单动态时钟绘制.docx

    QTimer 类是 Qt 中的一个定时器类,用于实现定时触发事件。在本资源中,QTimer 用于实现时钟的更新,通过 connect 函数将 QTimer 的 timeout 信号与 update 槽函数相连,实现时钟的实时更新。 六、 paintEvent 函数...

    Qt5利用自绘QPainter实现旋转按钮MySpinButton.rar

    2. **旋转动画**:利用QPropertyAnimation或QTimer来实现旋转效果,改变按钮的角度属性,并触发重新绘制。 3. **事件处理**:响应鼠标和键盘事件,如点击、拖动等,以实现按钮的功能。 4. **自适应大小**:确保按钮...

    (Qt)最简单的定时关机

    2. **QTimer类**:Qt提供了一个内置的QTimer类,用于实现定时功能。我们需要实例化一个QTimer对象,设置定时时间,然后连接到相应的槽函数。例如,可以使用`start()`方法启动定时器,设定一个以毫秒为单位的时间间隔...

    digitalclock.zip

    例如,可能使用了QPainter类来绘制钟表的背景、指针和其他元素,以及QTimer类来实现定时更新界面以反映当前时间。 3. **时钟模拟**:为了使钟表转动并显示正确的时间,开发者需要获取并处理系统时间,然后将时间...

    基于QT的秒表

    1. **QTimer类**:Qt提供了QTimer类来处理定时任务,秒表的核心就是周期性地更新时间显示。你可以设置一个定时器,每隔一定毫秒(例如100毫秒)触发一个信号,然后在槽函数中处理时间的增加。 2. **QObject与信号与...

    QT数字时钟,简单程序,适合练习

    - 使用QTimer类创建一个定时器,每隔一定间隔(例如1秒)触发更新时间的事件。QTimer::singleShot()或start()方法可以设置定时器。 - 重载定时器的timeout()信号,当触发时,获取系统当前时间(QTime::currentTime...

    24小时制,表盘显示

    在本项目中,开发者可能利用了Qt的QPainter类来绘制表盘和指针,QTimer类来实现时间的实时更新,以及QObject的信号和槽机制来连接时间更新与表盘刷新的逻辑。 QPainter是Qt中的一个绘图类,允许开发者进行高级的2D...

Global site tag (gtag.js) - Google Analytics