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

QT定時器QTimer

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

1.QObject類的定時器

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

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

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

intQObject::startTimer(int interval);

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

virtual voidQObject::timerEvent(QTimerEvent *event);

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

    當定時器事件發(fā)生時,虛函數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提供當定時器觸發(fā)的時候發(fā)射一個信號的定時器,他提供只觸發(fā)一次的超時事件,通常的使用方法如下:

//創(chuàng)建定時器

QTimer *testTimer = newQTimer(this);

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

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

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

testTimer->start(1000);

...

//停止運行定時器

if (testTimer->isActive() )

    testTimer->stop();

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

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

QTimer類提供了定時器信號和單觸發(fā)定時器。

它在內部使用定時器事件來提供更通用的定時器。QTimer很容易使用:創(chuàng)建一個QTimer,使用start()來開始并且把它的timeout()連接到適當的槽。當這段時間過去了,它將會發(fā)射timeout()信號。

注意當QTimer的父對象被銷毀時,它也會被自動銷毀。

實例:

        QTimer *timer = new QTimer( myObject );

        connect( timer, SIGNAL(timeout()),myObject, SLOT(timerDone()) );

        timer->start( 2000, TRUE ); // 2秒單觸發(fā)定時器

你也可以使用靜態(tài)的singleShot()函數來創(chuàng)建單觸發(fā)定時器。

作為一個特殊情況,一旦窗口系統(tǒng)事件隊列中的所有事件都已經被處理完,一個定時為0的QTimer就會到時間了。

這也可以用來當提供迅速的用戶界面時來做比較繁重的工作。

        QTimer *t = new QTimer( myObject );

        connect( t, SIGNAL(timeout()), SLOT(processOneThing()));

        t->start( 0, FALSE );

myObject->processOneThing()將會被重復調用并且應該很快返回(通常在處理一個數據項之后),這樣Qt可以把事件傳送給窗口部件并且一旦它完成這個工作就停止這個定時器。這是在圖形用戶界面應用程序中實現(xiàn)繁重的工作的一個典型方法,現(xiàn)在多線程可以在越來越多的平臺上使用,并且我們希望無效事件最終被線程替代。

注意QTimer的精確度依賴于底下的操作系統(tǒng)和硬件。絕大多數平臺支持20毫秒的精確度,一些平臺可以提供更高的。如果Qt不能傳送定時器觸發(fā)所要求的數量,它將會默默地拋棄一些。

另一個使用QTimer的方法是為你的對象調用QObject::startTimer()和在你的類中(當然必須繼承QObject)重新實現(xiàn)QObject::timerEvent()事件處理器。缺點是timerEvent()不支持像單觸發(fā)定時器或信號那樣的高級水平。

一些操作系統(tǒng)限制可能用到的定時器的數量,Qt會盡力在限制范圍內工作。

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


只有注冊用戶登錄后才能發(fā)表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美高清在线观看| 国产区欧美区日韩区| 久久成年人视频| 亚洲午夜成aⅴ人片| 亚洲欧美日韩一区| 在线观看精品| 亚洲激情av| 日韩午夜高潮| 亚洲视频欧美视频| 午夜精品福利在线| 欧美专区在线播放| 欧美成人a视频| 日韩一级大片| 亚洲一区在线观看免费观看电影高清| 亚洲一区精品电影| 亚洲人成网站色ww在线| 艳女tv在线观看国产一区| 午夜在线a亚洲v天堂网2018| 老司机午夜精品视频| 亚洲精品久久久一区二区三区| 亚洲成人在线网| 亚洲免费视频一区二区| 久久精品99无色码中文字幕| 美女视频黄免费的久久| 国产精品久久久久影院亚瑟| 永久域名在线精品| 亚洲色无码播放| 奶水喷射视频一区| 久久久久久久一区二区| 亚洲国产高清一区二区三区| 亚洲视频免费看| 久久亚洲综合色一区二区三区| 欧美日韩亚洲国产精品| 国产亚洲亚洲| 亚洲午夜羞羞片| 久久午夜电影| 一区二区欧美精品| 欧美www视频在线观看| 国产区在线观看成人精品| 亚洲精品国精品久久99热| 欧美一级艳片视频免费观看| 欧美激情一区二区久久久| 午夜激情久久久| 欧美日韩亚洲综合在线| 亚洲高清123| 久久免费偷拍视频| 亚洲图色在线| 欧美国内亚洲| 亚洲第一色中文字幕| 久久精品色图| 亚洲一区成人| 亚洲第一伊人| 久久综合色综合88| 欧美一级淫片播放口| 国产精品视频免费| 亚洲一区在线看| 亚洲精品国产精品国自产观看| 欧美69视频| 亚洲高清不卡| 亚洲高清视频一区| 欧美精品一区二区在线观看| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 91久久久久久久久| 免费欧美高清视频| 最新高清无码专区| 亚洲国产小视频在线观看| 另类av导航| 亚洲免费观看在线观看| 99精品热视频| 国产欧美日韩亚洲精品| 久久亚裔精品欧美| 美女国产精品| 99爱精品视频| 亚洲视频欧美视频| 国产综合视频在线观看| 久久亚洲视频| 久久久人成影片一区二区三区观看| 国产亚洲欧洲一区高清在线观看| 久久性天堂网| 久久er精品视频| 亚洲精品免费在线| 欧美黄色aa电影| 欧美成va人片在线观看| 欧美日韩午夜在线| 国产精品久久久久av免费| 欧美一区二区久久久| 欧美一级久久久久久久大片| 国产在线不卡| 久久性色av| 牛牛精品成人免费视频| 亚洲综合精品自拍| 小处雏高清一区二区三区| 国产精自产拍久久久久久| 欧美中文在线免费| 久久精品日韩欧美| 亚洲日韩欧美视频一区| 亚洲欧美日韩一区| 久久一区二区精品| 日韩一级网站| 亚洲色图自拍| 精品999日本| 亚洲人体大胆视频| 国产精品人人做人人爽| 亚洲欧美美女| 久久精品国产99国产精品澳门| ●精品国产综合乱码久久久久| 91久久精品国产| 国产精品久久久久久久久免费| 久久久99久久精品女同性| 欧美成人一区二区三区在线观看 | 亚洲精品视频啊美女在线直播| 欧美日韩在线一区二区三区| 久久精品免费观看| 欧美激情aⅴ一区二区三区| 亚洲欧美在线另类| 国产精品99久久久久久久久| 亚洲美女电影在线| 性欧美大战久久久久久久久| **网站欧美大片在线观看| 一本色道久久综合亚洲精品不卡| 韩日精品视频| 一区二区电影免费观看| 国产精品女人毛片| 亚洲婷婷综合色高清在线| 亚洲国产mv| 欧美一区午夜精品| 亚洲一区二区三区777| 另类尿喷潮videofree| 亚洲毛片av在线| 欧美日本三区| 欧美成人精品高清在线播放| 国产精品一区在线观看| 亚洲国产精品久久久久秋霞蜜臀| 国产精品色网| 亚洲美女中出| 在线播放视频一区| 欧美一区二区在线| 亚洲尤物视频在线| 欧美日韩国产经典色站一区二区三区| 麻豆国产va免费精品高清在线| 国产精品视频午夜| av成人免费在线| 国产精品久久久久国产a级| 久久久国产一区二区| 国内伊人久久久久久网站视频| 欧美国产精品中文字幕| 国产一区二区三区最好精华液| 亚洲精品黄色| 91久久精品国产91性色tv| 久久免费国产精品| 麻豆成人小视频| 红桃视频成人| 久久精品一二三区| 久久免费的精品国产v∧| 国产乱码精品一区二区三区av| 亚洲作爱视频| 亚洲一区二区成人在线观看| 欧美日韩网址| 亚洲制服av| 久久久精品动漫| 国内精品久久久久久影视8| 久久av一区二区三区漫画| 久久久五月婷婷| 激情综合色丁香一区二区| 久久久久久黄| 亚洲国产一区二区三区在线播 | 亚洲成色999久久网站| 久久久99精品免费观看不卡| 久久久人成影片一区二区三区| 狠狠v欧美v日韩v亚洲ⅴ| 99精品欧美一区| 久久综合中文| 亚洲精品美女在线观看| 欧美精品一区二区精品网| 亚洲精品一区二区三区四区高清 | 欧美激情精品久久久久久| 亚洲精品黄色| 欧美亚洲一区三区| 亚洲电影在线观看| 欧美精品一区三区| 亚洲一二三四区| 久热精品在线视频| 一区二区三区高清不卡| 国产欧美一区二区三区视频| 亚洲一区视频在线| 欧美成人精品福利| 亚洲一区二区高清| 欧美午夜一区| 欧美连裤袜在线视频| 亚洲欧美高清| 欧美国产先锋| 亚洲精品在线视频观看| 亚洲第一页中文字幕| 国产精品一区二区男女羞羞无遮挡| 久久久伊人欧美| 亚洲资源av| 日韩天堂在线视频| 亚洲精品日本| 免费短视频成人日韩| 亚洲破处大片|