Qt計(jì)時(shí)器使用方法詳解
本文實(shí)例為大家分享了Qt計(jì)時(shí)器的使用方法,供大家參考,具體內(nèi)容如下
計(jì)時(shí)器
在我們的日常設(shè)計(jì)程序中,經(jīng)常需要固定時(shí)間段來刷新界面或者處理一些事務(wù),這個(gè)時(shí)候計(jì)時(shí)器就很重要。
比如說在用Qt設(shè)計(jì)一個(gè)時(shí)間顯示程序時(shí)
我們?nèi)粝胱屵@個(gè)標(biāo)簽實(shí)時(shí)變動(dòng),計(jì)時(shí)器就是個(gè)很好的方法。
計(jì)時(shí)器類QTimer
我們先看看它的信號-槽機(jī)制
public Q_SLOTS: ? ? void start(int msec); ? ? void start(); ? ? void stop(); Q_SIGNALS: ? ? void timeout(QPrivateSignal);
start
函數(shù)就是說計(jì)時(shí)器的開始;
對應(yīng)的stop
就是計(jì)時(shí)器結(jié)束。
timeout
就是發(fā)射信號;
在直接使用start();
時(shí),默認(rèn)一秒發(fā)送約2000次信號
在使用start(int msec)
時(shí),則是每msec毫秒發(fā)送一次信號
代碼示例
注:為了方便顯示信號發(fā)送的頻率,我引入了i來記錄此頻率。
MainWindow::MainWindow(QWidget *parent) ? ? : QMainWindow(parent) { ? ? label = new QLabel(this); ? ? setCentralWidget(label); ? ? label->setAlignment(Qt::AlignCenter); ? ? ? //設(shè)置標(biāo)簽居中顯示 ? ? timer = new QTimer; ? ? connect(timer,&QTimer::timeout,this,&MainWindow::timeoutShow); //定義計(jì)時(shí)器,并連接槽函數(shù) ? ? timer->start(); ? ? //開始計(jì)時(shí) } MainWindow::~MainWindow() { } void MainWindow::timeoutShow() { ? ? static int i = 0; ? ? ? ? ? ? ? //記錄調(diào)用次數(shù) ? ? label->setText(QTime::currentTime().toString()+" ? ? "+QString::number(i++)); ? //顯示時(shí)間+次數(shù) }
上述代碼是沒有設(shè)定定時(shí)器的。
定時(shí)器設(shè)置為100ms的
timer->start(100);
定時(shí)器設(shè)置為1000ms的
timer->start(1000);
上圖中g(shù)if可能帶有加速效果 具體按照時(shí)間跳動(dòng)對比
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++ OpenCV實(shí)戰(zhàn)之圖像全景拼接
本文主要介紹了如何使用OpenCV C++ 進(jìn)行圖像全景拼接,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)OpenCV有一定的幫助,感興趣的可以了解一下2022-01-01C語言中strcpy()函數(shù)的具體實(shí)現(xiàn)及注意事項(xiàng)
C語言庫函數(shù)char *strcpy(char *dest, const char *src)把src所指向的字符串復(fù)制到dest,下面這篇文章主要給大家介紹了關(guān)于C語言中strcpy()函數(shù)的具體實(shí)現(xiàn)及注意事項(xiàng)的相關(guān)資料,需要的朋友可以參考下2022-11-11詳解計(jì)數(shù)排序算法及C語言程序中的實(shí)現(xiàn)
技術(shù)排序算法與我們普通接觸的冒泡排序和快速排序等基于元素比較的算法不同,在編程中通過C語言的數(shù)組能夠清除地表達(dá)出來,這里我們就來詳解計(jì)數(shù)排序算法及C語言程序中的實(shí)現(xiàn)2016-07-07