最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt定時器(QTimer)的3種使用方法

 更新時間:2024年01月03日 09:45:44   作者:----云煙----  
本文主要介紹了Qt定時器(QTimer)的3種使用方法,主要包括QObject類提供的定時器,QTimer類提供的定時器,靜態(tài)的singleShot?()函數(shù)創(chuàng)建單觸發(fā)定時器,具有一定的參考價值,感興趣的可以了解一下

Qt中定時器的使用有3種方法,

  • 使用QObject類提供的定時器
  • 使用QTimer類提供的定時器
  • 靜態(tài)的singleShot ()函數(shù)創(chuàng)建單觸發(fā)定時器

方法一:靜態(tài)的singleShot ()函數(shù)創(chuàng)建單觸發(fā)定時器(不推薦)

singleShot函數(shù)是一個靜態(tài)函數(shù),表示只會在被調(diào)用時會執(zhí)行一次操作。其中msec參數(shù)是時間,單位為ms,借助此函數(shù)可以簡單實現(xiàn)一個定時器,定時為100s。

   QTimer::singleShot(1*1000,this, &MyWidget::function);
   void MyWidget::function()
{
    static int num=0;
    if(num < 100)
    {
        QTimer::singleShot(1*1000,this, &MyWidget::function);
        num += 1;
        ui->spinBox->setValue(num);
        qDebug()<<num;
    }
}

方法二:使用QTimer定時器類(這種方法普遍使用)

示例代碼:

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    tim = new QTimer();

    tim->setInterval(1000);

    connect(tim,SIGNAL(timeout()),this,SLOT(onTimeOut()));

    tim->start();
}


void MainWindow::onTimeOut()
{
    static int value = 0;
    ui->progressBar->setValue(value++);

    if(value > 100)
        tim->stop();
}

QTimer類的簡單介紹可以參考:

QTimer成員函數(shù):

QTimer::QTimer ( QObject * parent = 0, const char * name = 0 )
構(gòu)造一個被稱作name,父對象為parent的定時器。

QTimer::~QTimer ()
銷毀這個定時器。

void QTimer::setInterval ( int msec )
設(shè)定定時間隔為msec毫秒。如果這個定時器信號是運行的,它將會被停止并且重新開始,否則它將會被開始。

bool QTimer::isActive () const
如果定時器正在運行,返回真,否則返回假。

void QTimer::singleShot ( int msec, QObject * receiver, const char * member ) [靜態(tài)]
這個靜態(tài)函數(shù)在一個給定時間間隔之后調(diào)用一個槽。

int QTimer::start ( int msec, bool sshot = FALSE )
開始一個msec毫秒定時的定時器。如果sshot為真,這個定時器將只會被激活一次,否則它將會持續(xù)到它被停止

void QTimer::stop ()
停止這個定時器。

void QTimer::timeout () [信號]
當(dāng)定時器被激活時,這個信號被發(fā)射。

方法三:QObject中的定時器的使用,需要用到三個函數(shù)

1、 int QObject::startTimer ( int interval ) ;

這個是開啟一個定時器的函數(shù),他的參數(shù)interval是毫秒級別。當(dāng)開啟成功后會返回這個定時器的ID, 并且每隔interval 時間后會進(jìn)入timerEvent 函數(shù)。直到定時器被殺死。

2、 void QObject::timerEvent ( QTimerEvent * event );

當(dāng)定時器超時后,會進(jìn)入該事件timerEvent函數(shù),需要重寫timerEvent函數(shù),在函數(shù)中通過判斷event->timerId()來確定定時器,然后執(zhí)行某個定時器的超時函數(shù)。

3、 void QObject::killTimer ( int id );

通過從startTimer返回的ID傳入killTimer 函數(shù)中殺死定時器,結(jié)束定時器進(jìn)入超時處理。

代碼:kilTimer殺死定時器后,必須再重新創(chuàng)建定時器才能啟用定時器。

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    timerid1 = startTimer(1000);
    timerid2 = startTimer(2000);
}


void MainWindow::timerEvent(QTimerEvent *e)
{
    if(e->timerId()==timerid1)
    {
        qDebug("timer1");
    }
    else if(e->timerId()==timerid2)
    {
        qDebug("timer2");
    }
}

void MainWindow::on_pushButton_clicked()
{
    killTimer(timerid1);
    timerid1 = 0;
}


void MainWindow::on_pushButton_2_clicked()
{
    timerid1 = startTimer(2000);
}

到此這篇關(guān)于Qt 定時器(QTimer)的3種使用方法的文章就介紹到這了,更多相關(guān)Qt 定時器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • 詳解VSCode下C++環(huán)境配置過程

    詳解VSCode下C++環(huán)境配置過程

    這篇文章主要介紹了VSCode C++環(huán)境配置過程,在這大家需要在代碼的目錄下的.vscode文件夾下創(chuàng)建launch.json、tasks.json,具體實現(xiàn)過程跟隨小編一起看看吧
    2021-11-11
  • 解析C++中四種強制類型轉(zhuǎn)換的區(qū)別詳解

    解析C++中四種強制類型轉(zhuǎn)換的區(qū)別詳解

    本篇文章是對C++中四種強制類型轉(zhuǎn)換的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C語言sizeof和strlen的指針和數(shù)組面試題詳解

    C語言sizeof和strlen的指針和數(shù)組面試題詳解

    strlen是函數(shù),字符串長度,不包括停止符。而sizeof則是內(nèi)存塊的大小,包括停止符。數(shù)組是一種數(shù)據(jù)類型,數(shù)據(jù)類型的本質(zhì)就是固定大小,內(nèi)存塊的別名??梢杂胹izeof()一般都是數(shù)據(jù)類型
    2022-04-04
  • C++ Leetcode實現(xiàn)從英文中重建數(shù)字

    C++ Leetcode實現(xiàn)從英文中重建數(shù)字

    本文主要介紹了當(dāng)給你一個字符串s,其中包含字母順序打亂的用英文單詞表示的若干數(shù)字(0-9)時,如何通過Leetcode按升序返回原始的數(shù)字。感興趣的童鞋可以來看看
    2021-11-11
  • Qt使用QPainter繪制3D立方體

    Qt使用QPainter繪制3D立方體

    這篇文章主要為大家詳細(xì)介紹了Qt使用QPainter繪制3D立方體,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • 淺談c++中的異常處理機制

    淺談c++中的異常處理機制

    C++異常處理機制通過try/catch/throw結(jié)構(gòu)處理運行時錯誤,本文就來介紹一下c++中的異常處理機制,具有一定的參考價值,感興趣的可以了解一下
    2025-02-02
  • C++ 多線程編程建議之 C++ 對多線程/并發(fā)的支持(下)

    C++ 多線程編程建議之 C++ 對多線程/并發(fā)的支持(下)

    這篇文章主要介紹的是 C++ 多線程編程建議之 C++ 對多線程/并發(fā)的支持的相關(guān)資料,承接前文 現(xiàn)代 C++ 對多線程/并發(fā)的支持,接下來我們看看回發(fā)生什么吧
    2021-10-10
  • C語言與C++項目實現(xiàn)相互調(diào)用

    C語言與C++項目實現(xiàn)相互調(diào)用

    extern?“c”的作用可以實現(xiàn)c語言和c++相互調(diào)用,本文就詳細(xì)的介紹一下C語言與C++項目實現(xiàn)相互調(diào)用,感興趣的可以了解一下
    2022-01-01
  • C++11中std::move、std::forward、左右值引用、移動構(gòu)造函數(shù)的測試問題

    C++11中std::move、std::forward、左右值引用、移動構(gòu)造函數(shù)的測試問題

    這篇文章主要介紹了C++11中std::move、std::forward、左右值引用、移動構(gòu)造函數(shù)的測試,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • C語言字符串?dāng)?shù)組詳解

    C語言字符串?dāng)?shù)組詳解

    這篇文章主要介紹了C語言字符串?dāng)?shù)組詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08

最新評論

德兴市| 宜川县| 镇宁| 嵊泗县| 赤城县| 连云港市| 毕节市| 崇信县| 松潘县| 黎城县| 五大连池市| 闽侯县| 保定市| 林周县| 高要市| 武安市| 肥城市| 布拖县| 南岸区| 通辽市| 来凤县| 东乌珠穆沁旗| 根河市| 康保县| 深泽县| 丹棱县| 海伦市| 龙州县| 凤凰县| 云阳县| 宜昌市| 财经| 儋州市| 新巴尔虎左旗| 东平县| 白银市| 清丰县| 深州市| 孝义市| 旺苍县| 托克逊县|