Qt實(shí)現(xiàn)簡易計(jì)時(shí)器的示例代碼
一、項(xiàng)目介紹
計(jì)時(shí)器實(shí)現(xiàn)四個(gè)功能:開始計(jì)時(shí)、停止計(jì)時(shí)、暫停計(jì)時(shí)以及打點(diǎn)。當(dāng)點(diǎn)擊暫停時(shí),開始按鈕和停止按鈕無法點(diǎn)擊,此時(shí)暫停按鈕變?yōu)槔^續(xù)。當(dāng)點(diǎn)擊停止時(shí),開始按鈕和暫停按鈕無法點(diǎn)擊,此時(shí)停止按鈕變?yōu)榍辶恪?/p>
二、項(xiàng)目基本配置
新建一個(gè)Mainwindow界面。基本配置與其他Qt項(xiàng)目類似,這里不過多介紹。
三、UI界面設(shè)計(jì)
UI界面如下:
界面中包含有6個(gè)控件,其主要內(nèi)容如下:
名稱 | 類型 | 屬性 |
---|---|---|
LCDNumber | QLCDNumber | digitCount:18 |
開始 | QPushButton | objectName:btn_start |
停止 | QPushButton | objectName:btn_stop |
暫停 | QPushButton | objectName:btn_pause |
打點(diǎn) | QPushButton | objectName:btn_log |
textBrowser | QTextBrowser | / |
【注意:將LCDNumber設(shè)置為右對(duì)齊的常見設(shè)置為:將其digitCount屬性設(shè)置為18左右】
布局方式:
四個(gè)按鈕布局方式為水平布局,整體的布局方式為垂直布局。
四、主程序?qū)崿F(xiàn)
4.1 mainwindow.h頭文件
頭文件中聲明五個(gè)槽函數(shù),一個(gè)定時(shí)器對(duì)象,一個(gè)基本時(shí)間對(duì)象以及l(fā)cdNumber的時(shí)刻值,核心代碼如下:
private slots: void updataTimeAndDisplay(); void on_btn_start_clicked(); void on_btn_stop_clicked(); void on_btn_pause_clicked(); void on_btn_log_clicked(); private: QTimer *ptimer; //定時(shí)器對(duì)象 QTime baseTime; //時(shí)間對(duì)象——00:00:00 QString showStr; //lcdNumber的時(shí)刻值
4.2 mainwindow.cpp源文件
MainWindow主程序代碼為:
ptimer=new QTimer; //初始化對(duì)象 connect(ptimer,SIGNAL(timeout()),this,SLOT(updataTimeAndDisplay()));
定義更新和顯示時(shí)間函數(shù):
void MainWindow::updataTimeAndDisplay() { QTime current=QTime::currentTime();//獲取系統(tǒng)當(dāng)前時(shí)間 int t=this->baseTime.msecsTo(current); //兩者相減的時(shí)間之差 QTime showtime(0,0,0,0);//初始時(shí)間 showtime=showtime.addMSecs(t);//增加tms showStr=showtime.toString("hh:mm:ss:zzz"); //轉(zhuǎn)換為string類型 ui->lcdNumber->display(showStr); //顯示 }
定義點(diǎn)擊開始按鈕槽函數(shù):
void MainWindow::on_btn_start_clicked() { baseTime=QTime::currentTime(); ptimer->start(1); }
定義點(diǎn)擊停止按鈕槽函數(shù):
void MainWindow::on_btn_stop_clicked() { if(ui->btn_stop->text()=="停止"){ ptimer->stop(); ui->btn_stop->setText("清零"); ui->btn_start->setEnabled(false);//開始按鈕無法點(diǎn)擊 ui->btn_pause->setEnabled(false); }else{ ui->lcdNumber->display("00:00:00:000") ;//清零 ui->textBrowser->clear(); ui->btn_stop->setText("停止"); ui->btn_start->setEnabled(true);//開始按鈕可以點(diǎn)擊 ui->btn_pause->setEnabled(true); } }
定義點(diǎn)擊暫停按鈕槽函數(shù):
void MainWindow::on_btn_pause_clicked() { static QTime pauseTime; //暫停時(shí)間【靜態(tài)】 if(ui->btn_pause->text()=="暫停"){ pauseTime=QTime::currentTime();//獲取點(diǎn)擊暫停時(shí)的當(dāng)前時(shí)間 ptimer->stop(); ui->btn_pause->setText("繼續(xù)"); ui->btn_start->setEnabled(false);//開始按鈕無法點(diǎn)擊 ui->btn_stop->setEnabled(false); }else{ QTime cut=QTime::currentTime();//繼續(xù)時(shí)的時(shí)間 int t=pauseTime.msecsTo(cut);//差值 baseTime=baseTime.addMSecs(t); //后延相應(yīng)的tms繼續(xù)計(jì)時(shí) ptimer->start(1); ui->btn_pause->setText("暫停"); ui->btn_start->setEnabled(true);//開始按鈕可以點(diǎn)擊 ui->btn_stop->setEnabled(true); } }
定義點(diǎn)擊打點(diǎn)按鈕槽函數(shù):
//打點(diǎn) void MainWindow::on_btn_log_clicked() { ui->textBrowser->append(showStr);//添加到textBrowser中 }
五、效果演示
以上就是Qt實(shí)現(xiàn)簡易計(jì)時(shí)器的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于Qt計(jì)時(shí)器的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Qt添加MSVC2017編譯器的實(shí)現(xiàn)方法
Qt添加MSVC2017編譯器是開發(fā)者在Windows平臺(tái)上進(jìn)行Qt應(yīng)用程序開發(fā)的重要步驟,本文詳細(xì)介紹了如何為Qt配置MSVC2017編譯器的具體步驟,感興趣的可以了解一下2023-09-09C語言實(shí)現(xiàn)家庭理財(cái)系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)家庭理財(cái)系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11詳解C++數(shù)組和數(shù)組名問題(指針、解引用)
這篇文章主要介紹了詳解C++數(shù)組和數(shù)組名問題(指針、解引用),指針的實(shí)質(zhì)就是個(gè)變量,它跟普通變量沒有任何本質(zhì)區(qū)別,指針本身是一個(gè)對(duì)象,同時(shí)指針無需在定義的時(shí)候賦值,具體內(nèi)容詳情跟隨小編一起看看吧2021-09-09C語言自定義實(shí)現(xiàn)strlen函數(shù)的3種方法總結(jié)
這篇文章帶大家了解C語言中自定義實(shí)現(xiàn)strlen函數(shù)的3種方法,計(jì)數(shù)器,遞歸以及指針,這三種方法通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08C語言實(shí)現(xiàn)24點(diǎn)游戲源代碼
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)24點(diǎn)游戲源代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10