青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

QT定時器QTimer

在Qt中使用定時器有兩種方法,一種是使用QObiect類的定時器;一種是使用QTimer類。定時器的精確性依賴于操作系統和硬件,大多數平臺支持20ms的精確度。

1.QObject類的定時器

    QObject是所有Qt對象的基類,它提供了一個基本的定時器。通過QObject::startTimer(),可以把一個一毫秒為單位的時間間隔作為參數來開始定時器,這個函數返回一個唯一的整數定時器的標識符。這個定時器開始就會在每一個時間間隔"觸發",直到明確的使用這個定時器的標識符來調用QObject::killTimer()結束。

    當定時器觸發時,應用程序會發送一個QTimerEvent。在事件循環中,處理器按照事件隊列的順序來處理定時器事件。當處理器正忙于其它事件處理時,定時器就不能立即處理。

    QObject類還提供定時期的功能。與定時器相關的成員函數有:startTimer()、timeEvent()、killTimer()。QObject基類中的startTimer()和timerEvent()原型及說明如下:

intQObject::startTimer(int interval);

    開始一個定時器并返回定時器ID,如果不能開始一個定時器,將返回0。定時器開始后,每隔interval毫秒間隔將觸發一次超時事件,直到killTimer()被調用來刪除定時器。如果interval為0,那么定時器事件每次發生時沒有窗口系統事件處理。

virtual voidQObject::timerEvent(QTimerEvent *event);

    虛函數timerEvent()被重載來實現用戶的超時事件處理函數。如果有多個定時器在運行,QTimerEvent::timerId()被用來查找指定定時器,對其進行操作。

    當定時器事件發生時,虛函數timerEvent()隨著QTimerEvent事件參數類一起被調用,重載這個函數可以獲得定時器事件。

    定時器的用法如下:

//頭文件

class QNewObject : publicQObject

{

    Q_OBJECT

public:

    QNewObject( QObject * parent = 0 );

    virtual ~QNewObject();

protected:

    void timerEvent( QTimerEvent *event );

    int m_nTimerId;

};

//源文件

QNewObject::QNewObject(QObject * parent )

    :QNewObject( parent )

{

    m_nTimerId = startTimer(1000);

}

QNewObject::~QNewObject()

{

    if ( m_nTimerId != 0 )

        killTimer(m_nTimerId);

}

voidQNewObject::timerEvent( QTimerEvent *event )

{

    qDebug( "timer event, id %d",event->timerId() );

}

2.定時器類QTimer

 定時器類QTimer提供當定時器觸發的時候發射一個信號的定時器,他提供只觸發一次的超時事件,通常的使用方法如下:

//創建定時器

QTimer *testTimer = newQTimer(this);

//將定時器超時信號與槽(功能函數)聯系起來

connect( testTimer,SIGNAL(timeout()), this, SLOT(testFunction()) );

//開始運行定時器,定時時間間隔為1000ms

testTimer->start(1000);

...

//停止運行定時器

if (testTimer->isActive() )

    testTimer->stop();

  QTimer還提供了一個簡單的只有一次定時的函數singleShot()。 一個定時器在100ms后觸發處理函數animateTimeout()并且只觸發一次。代碼如下:

QTimer::singleShot( 100,this, SLOT(animateTimeout()) );

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會盡力在限制范圍內工作。

posted on 2017-07-23 20:31 zmj 閱讀(1364) 評論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产欧美日韩在线播放| 麻豆精品传媒视频| 国产视频久久| 欧美网站大全在线观看| 亚洲图片欧美一区| 久久综合久久综合久久综合| 性做久久久久久免费观看欧美| 午夜精品影院| 另类综合日韩欧美亚洲| 久久午夜羞羞影院免费观看| 蜜臀av在线播放一区二区三区| 日韩视频在线观看国产| 99国产一区| 欧美亚洲日本国产| 美女福利精品视频| 亚洲第一在线综合在线| 欧美本精品男人aⅴ天堂| 亚洲国产精品福利| 亚洲一区亚洲| 久久影院午夜论| 欧美日韩免费高清一区色橹橹| 国产精品日韩精品| 亚洲人成人一区二区三区| 欧美激情日韩| 欧美日韩成人综合天天影院| 国产欧美在线播放| 99国产精品视频免费观看| 欧美在线一二三| 亚洲国产视频一区二区| 先锋a资源在线看亚洲| 欧美久久久久免费| 影音先锋亚洲一区| 欧美一区二区三区免费观看| 亚洲黄色在线| 久久亚洲综合色| 国产精品视频yy9099| 日韩视频中文| 欧美成熟视频| 久久精品人人做人人爽| 国产精品久久夜| 99精品欧美一区二区三区| 久久香蕉国产线看观看网| 亚洲一区精品电影| 欧美日韩一区二区三区四区五区 | 亚洲自拍偷拍一区| 欧美精品一区二区三区高清aⅴ| 欧美激情性爽国产精品17p| 久久精品国产在热久久| 亚洲社区在线观看| 欧美激情综合在线| 欧美激情91| 亚洲综合日韩中文字幕v在线| 欧美日韩一区精品| 国产精品综合网站| 老司机一区二区| 禁久久精品乱码| 欧美主播一区二区三区美女 久久精品人| 亚洲精品中文字幕在线| 免费不卡中文字幕视频| 在线看片成人| 欧美a级片一区| 欧美成人a视频| 一本色道久久综合亚洲精品婷婷| 亚洲第一区在线| 欧美91精品| 激情成人av| 亚洲精品一二三| 国产美女诱惑一区二区| 亚洲男人av电影| 久久久久久高潮国产精品视| 亚洲欧洲一区二区三区| 99riav久久精品riav| 亚洲欧美日韩一区二区| 亚洲国产片色| 欧美日韩一区综合| 久久久久久九九九九| 老牛嫩草一区二区三区日本| 日韩亚洲国产欧美| 欧美一级网站| 日韩亚洲欧美一区二区三区| 亚洲一区免费在线观看| 日韩视频免费看| 免费观看成人www动漫视频| 亚洲欧美久久久久一区二区三区| 免费人成网站在线观看欧美高清| 亚洲一区二区三区四区在线观看| 一本大道久久a久久综合婷婷| 久久精品国产欧美激情| 亚洲国产高潮在线观看| 国产精品久久久久久影视| 一区二区日韩| 亚洲精品美女久久久久| 欧美午夜精品理论片a级大开眼界| 开元免费观看欧美电视剧网站| 久久精品国产免费看久久精品| 欧美在线电影| 99国产精品一区| 欧美一区激情| 亚洲区一区二| 亚洲免费在线观看视频| 亚洲国产综合在线| 一区二区三区精品视频在线观看| 国产亚洲欧洲一区高清在线观看| 欧美成人tv| 国产精品免费看| 亚洲人午夜精品免费| 国产日韩精品久久| 99亚洲精品| 亚洲电影欧美电影有声小说| 亚洲一区二区在线免费观看| 亚洲精品国产精品乱码不99 | 亚洲激情视频网站| 国产专区精品视频| 宅男66日本亚洲欧美视频| 亚洲国产一区二区视频| 久久久国产91| 久久精品人人做人人爽| 国产精品美女一区二区| 欧美一区二区在线免费观看| 欧美在线91| 小黄鸭视频精品导航| 欧美日韩在线观看一区二区三区 | 久久久精品免费视频| 午夜精品久久久久影视 | 亚洲激情自拍| 久久久水蜜桃| 久久综合伊人77777| 国产视频一区欧美| 亚洲直播在线一区| 午夜精彩国产免费不卡不顿大片| 欧美日韩国产精品| 久久婷婷色综合| 黄色精品一区| 久久久久久电影| 欧美大秀在线观看| 亚洲国产一区二区精品专区| 久久影院亚洲| 99re6这里只有精品视频在线观看| 一本到12不卡视频在线dvd| 国产综合精品| 国产午夜精品视频| 在线色欧美三级视频| 亚洲福利一区| 亚洲亚洲精品在线观看| 一本久久综合| 亚洲激情另类| 亚洲欧美日韩在线高清直播| 国产精品ⅴa在线观看h| 亚洲网在线观看| 欧美在线精品一区| 好吊视频一区二区三区四区| 久久久综合精品| 亚洲国产天堂久久综合网| 亚洲黄色免费| 欧美日韩一区二区欧美激情| 亚洲小视频在线观看| 欧美一级在线视频| 狠狠综合久久av一区二区小说 | 91久久久亚洲精品| 亚洲一区二区3| 国产日韩av高清| 免费欧美高清视频| 中文在线资源观看视频网站免费不卡| 欧美伊人久久| 91久久午夜| 国产精品国产三级欧美二区| 性色av一区二区三区| 欧美黄色日本| 欧美亚洲一区二区在线| 在线播放日韩欧美| 欧美三级日韩三级国产三级| 午夜免费电影一区在线观看| 欧美成人四级电影| 午夜视频在线观看一区| 亚洲高清视频一区二区| 欧美色区777第一页| 欧美专区18| 欧美激情1区2区3区| 狠狠色狠狠色综合日日小说| 欧美国产日本韩| 午夜久久久久久| 日韩午夜激情av| 欧美jizz19性欧美| 欧美一区影院| 中文网丁香综合网| 亚洲国产精品久久人人爱蜜臀| 国产精品久久久久一区| 欧美福利视频在线| 久久不射电影网| 亚洲视频视频在线| 亚洲精品久久久蜜桃 | 久久精品视频99| 亚洲一区免费看| 日韩一级免费观看| **欧美日韩vr在线| 国产三级欧美三级| 国产麻豆成人精品| 国产精品久久9| 欧美日韩中文另类| 亚洲永久字幕|