亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

Qt中定時(shí)器的使用有3種方法,

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

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

singleShot函數(shù)是一個(gè)靜態(tài)函數(shù),表示只會(huì)在被調(diào)用時(shí)會(huì)執(zhí)行一次操作。其中msec參數(shù)是時(shí)間,單位為ms,借助此函數(shù)可以簡單實(shí)現(xiàn)一個(gè)定時(shí)器,定時(shí)為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定時(shí)器類(這種方法普遍使用)

示例代碼:

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)造一個(gè)被稱作name,父對(duì)象為parent的定時(shí)器。

QTimer::~QTimer ()
銷毀這個(gè)定時(shí)器。

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

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

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

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

void QTimer::stop ()
停止這個(gè)定時(shí)器。

void QTimer::timeout () [信號(hào)]
當(dāng)定時(shí)器被激活時(shí),這個(gè)信號(hào)被發(fā)射。

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

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

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

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

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

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

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

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

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 定時(shí)器(QTimer)的3種使用方法的文章就介紹到這了,更多相關(guān)Qt 定時(shí)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • C語言統(tǒng)計(jì)一篇英文短文中單詞的個(gè)數(shù)實(shí)例代碼

    C語言統(tǒng)計(jì)一篇英文短文中單詞的個(gè)數(shù)實(shí)例代碼

    本文通過實(shí)例代碼給大家介紹的C語言統(tǒng)計(jì)一篇英文短文中單詞的個(gè)數(shù),代碼簡單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2018-03-03
  • C++ 迭代器失效問題解決

    C++ 迭代器失效問題解決

    在C++中,當(dāng)一個(gè)vector進(jìn)行了插入或刪除操作時(shí),其迭代器可能會(huì)失效,本文就來介紹一下C++ 迭代器失效問題解決,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • C++實(shí)現(xiàn)插入排序?qū)φ麛?shù)數(shù)組排序

    C++實(shí)現(xiàn)插入排序?qū)φ麛?shù)數(shù)組排序

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)插入排序?qū)φ麛?shù)數(shù)組排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • 如何編譯libfreetype方法詳解

    如何編譯libfreetype方法詳解

    libfreetype是為跨平臺(tái)設(shè)計(jì)的,在windows下要編譯的話,可以直接打開目錄進(jìn)行編譯,本文將詳細(xì)介紹libfreetype編譯
    2012-11-11
  • 基于C中含有if的宏定義詳解

    基于C中含有if的宏定義詳解

    本篇文章是對(duì)C中含有if的宏定義進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++ 解引用與函數(shù)基礎(chǔ)詳解之內(nèi)存地址、調(diào)用方法及聲明

    C++ 解引用與函數(shù)基礎(chǔ)詳解之內(nèi)存地址、調(diào)用方法及聲明

    函數(shù)是C++ 中重要的編程概念,它們可以提高代碼的可重用性、可讀性和可維護(hù)性,本文介紹C++ 解引用與函數(shù)基礎(chǔ)詳解之內(nèi)存地址、調(diào)用方法及聲明,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • 如何為Qt視圖中的文字實(shí)現(xiàn)彩虹漸變效果

    如何為Qt視圖中的文字實(shí)現(xiàn)彩虹漸變效果

    這篇文章主要給大家介紹了關(guān)于如何為Qt視圖中的文字實(shí)現(xiàn)彩虹漸變效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Qt具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • C++ 再識(shí)類和對(duì)象

    C++ 再識(shí)類和對(duì)象

    類是創(chuàng)建對(duì)象的模板,一個(gè)類可以創(chuàng)建多個(gè)對(duì)象,每個(gè)對(duì)象都是類類型的一個(gè)變量;創(chuàng)建對(duì)象的過程也叫類的實(shí)例化。每個(gè)對(duì)象都是類的一個(gè)具體實(shí)例(Instance),擁有類的成員變量和成員函數(shù)
    2021-10-10
  • c++11之std::async 和std::thread的區(qū)別小結(jié)

    c++11之std::async 和std::thread的區(qū)別小結(jié)

    std::async和std::thread都是C++11中提供的線程庫,它們都可以用于創(chuàng)建新線程,本文主要介紹了c++11之std::async 和std::thread的區(qū)別小結(jié),感興趣的可以了解一下
    2024-02-02
  • C語言二維數(shù)組的處理實(shí)例

    C語言二維數(shù)組的處理實(shí)例

    這篇文章主要介紹了C語言二維數(shù)組的處理實(shí)例,有需要的朋友可以參考一下
    2013-12-12

最新評(píng)論