QTimer計時器

在QT5中,我們有一個專門的計時器類,QTimer,我們可以利用它完成一些關于定時的操作,實例如下:

#include <QTimer>

QTimer* timer = new QTimer();
timer->start(value);           //以毫秒為單位
QObject::connect(timer,&QTimer::timeout,receiver,&slot);    //時間結束,發送timeout信號

void slot()
{
       timer->stop();                 //停止計時器
       //do something  
}

在我們定時時間結束的時候,我們需要手動停止timer,不然他會不斷發送出timeout這個信號,同時,我們需要注意,在做連接函數之前,我們需要存在這個timer的實例,不然會導致程序崩潰,當然我們也可以不需要實例化timer,而是使用QTimer的靜態方法,直接起動定時,一下是QT文檔中的一個例子:

#include <QApplication>
#include <QTimer>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QTimer::singleShot(600000, &app, SLOT(quit()));    //使用靜態方法,在600秒之后退出程序
    ...
    return app.exec();
}

我們可以在一個程序之中使用多個timer,每一個timer都是有著自己獨自的timerId,和window進程的pid類似,我們可以利用timerEvent來處理多個timer:

void timerEvent(QTimerEvent* event)
{
        if(event->timerId() == timerId)            //使用if來判斷是那個timer發出的信號        
        {
                // do something 
        }  
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,948評論 18 139
  • Qt是屬于一個跨平臺的GUI開發軟件,支持的平臺有Unix、Linux、Windows/WinCE、IOS等。 Q...
    一葉之界閱讀 8,214評論 0 17
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,364評論 25 708
  • 前言 關于Qt的學習道路需要不斷日積月累,下面有一些學習資料提供給大家:Qt官網、編碼風格、GitHub & Th...
    YBshone閱讀 6,038評論 3 95
  • 兩個,一個是火云譯客,可以字數統計,word 和Excel 除了PPT以外 一個是Omegal, 需要把文檔導入,...
    小小朵的春天閱讀 310評論 0 0