目錄
常見的函數(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í)器類型,它的使用方法如下:
- 定義一個(gè)調(diào)用QTimer對(duì)象,調(diào)用start()函數(shù)啟動(dòng)定時(shí)器,則
- 定時(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)行。?
#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;
}
?注意:文章來源:http://www.zghlxwxcb.cn/news/detail-524335.html
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)!