国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【QT】——定時(shí)器QTimer的使用

這篇具有很好參考價(jià)值的文章主要介紹了【QT】——定時(shí)器QTimer的使用。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

常見的函數(shù)

構(gòu)造函數(shù)

獲取/設(shè)置定時(shí)器間隔時(shí)間

啟動(dòng)/停止定時(shí)器?

信號(hào)

設(shè)置定時(shí)器的時(shí)間的兩種方法

設(shè)置定時(shí)器精度

其他函數(shù)

靜態(tài)函數(shù)

實(shí)例


QTimer是QT框架中的定時(shí)器類型,它的使用方法如下:

  1. 定義一個(gè)調(diào)用QTimer對(duì)象,調(diào)用start()函數(shù)啟動(dòng)定時(shí)器,則
  2. 定時(shí)器則會(huì)周期性的發(fā)送一個(gè)timeout的信號(hào)

常見的函數(shù)

構(gòu)造函數(shù)

// 構(gòu)造函數(shù)
// 如果指定了父對(duì)象, 創(chuàng)建的堆內(nèi)存可以自動(dòng)析構(gòu)
QTimer::QTimer(QObject *parent = nullptr);

獲取/設(shè)置定時(shí)器間隔時(shí)間

// 設(shè)置定時(shí)器時(shí)間間隔為 msec 毫秒
// 默認(rèn)值是0,一旦窗口系統(tǒng)事件隊(duì)列中的所有事件都已經(jīng)被處理完,一個(gè)時(shí)間間隔為0的QTimer就會(huì)觸發(fā)
void QTimer::setInterval(int msec);
// 獲取定時(shí)器的時(shí)間間隔, 返回值單位: 毫秒
int QTimer::interval() const;

啟動(dòng)/停止定時(shí)器?



// 調(diào)用 setInterval() 設(shè)置時(shí)間間隔
[slot] void QTimer::start();
// 啟動(dòng)或重新啟動(dòng)定時(shí)器,超時(shí)間隔為msec毫秒。
[slot] void QTimer::start(int msec);
// 停止定時(shí)器。
[slot] void QTimer::stop();

信號(hào)

[signal] void QTimer::timeout();

定時(shí)器設(shè)置時(shí)間的意義:

每消耗該時(shí)間間隔,定時(shí)器就會(huì)發(fā)出一個(gè)timeout的信號(hào)

設(shè)置定時(shí)器的時(shí)間的兩種方法

?第一種,直接通過setInterval方式直接設(shè)置定時(shí)器的時(shí)間間隔:

QTiemr t;
t.setInterval(5000);//設(shè)置定時(shí)器時(shí)間間隔
t.start();//啟動(dòng)定時(shí)器

第二種,通過start方式設(shè)置定時(shí)器時(shí)間間隔:

QTiemr t;
t.start(5000);//啟動(dòng)定時(shí)器

設(shè)置定時(shí)器精度

// 設(shè)置定時(shí)器精度
/*
參數(shù): 
    - Qt::PreciseTimer -> 精確的精度, 毫秒級(jí)
    - Qt::CoarseTimer  -> 粗糙的精度, 和1毫秒的誤差在5%的范圍內(nèi), 默認(rèn)精度
    - Qt::VeryCoarseTimer -> 非常粗糙的精度, 精度在1秒左右
*/
void QTimer::setTimerType(Qt::TimerType atype);
Qt::TimerType QTimer::timerType() const;	// 獲取當(dāng)前定時(shí)器的精度

其他函數(shù)

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

// 判斷定時(shí)器是否只觸發(fā)一次
bool QTimer::isSingleShot() const;
// 設(shè)置定時(shí)器是否只觸發(fā)一次, 參數(shù)為true定時(shí)器只觸發(fā)一次, 為false定時(shí)器重復(fù)觸發(fā), 默認(rèn)為false
void QTimer::setSingleShot(bool singleShot);

靜態(tài)函數(shù)

調(diào)用該靜態(tài)函數(shù)只發(fā)送一次timeout信號(hào)


/*
功能: 在msec毫秒后發(fā)射一次信號(hào), 并且只發(fā)射一次
參數(shù):
	- msec:     在msec毫秒后發(fā)射信號(hào)
	- receiver: 接收信號(hào)的對(duì)象地址
	- method:   槽函數(shù)地址
*/
[static] void QTimer::singleShot(
        int msec, const QObject *receiver, 
        PointerToMemberFunction method);

實(shí)例

實(shí)現(xiàn)一個(gè)時(shí)鐘,點(diǎn)擊開始,則時(shí)鐘開始運(yùn)行。?

【QT】——定時(shí)器QTimer的使用,QT筆記,qt,開發(fā)語言

#include "ui_mainwindow.h"
#include<QTime>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QTimer* t=new QTimer;
    //每個(gè)1秒鐘發(fā)出一個(gè)信號(hào)
    t->setInterval(1000);
    connect(ui->start_btn,&QPushButton::clicked,this,[=](){
        //啟動(dòng)定時(shí)器
        if(t->isActive()){
            t->stop();
            ui->start_btn->setText("開始");
        }
        else{
            t->start();
            ui->start_btn->setText("停止");
        }

    });


    connect(t,&QTimer::timeout,this,[&](){
        //獲取當(dāng)前時(shí)間
        QTime t=QTime::currentTime();
        QString s=t.toString("h:m:s");
        ui->time_label->setText(s);
    });
}

MainWindow::~MainWindow()
{
    delete ui;
}

?注意:

QTimer默認(rèn)的時(shí)間是毫秒文章來源地址http://www.zghlxwxcb.cn/news/detail-524335.html

到了這里,關(guān)于【QT】——定時(shí)器QTimer的使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包