Qt實現簡易計時器的示例代碼
一、項目介紹
計時器實現四個功能:開始計時、停止計時、暫停計時以及打點。當點擊暫停時,開始按鈕和停止按鈕無法點擊,此時暫停按鈕變?yōu)槔^續(xù)。當點擊停止時,開始按鈕和暫停按鈕無法點擊,此時停止按鈕變?yōu)榍辶恪?/p>
二、項目基本配置
新建一個Mainwindow界面?;九渲门c其他Qt項目類似,這里不過多介紹。
三、UI界面設計
UI界面如下:
界面中包含有6個控件,其主要內容如下:
名稱 | 類型 | 屬性 |
---|---|---|
LCDNumber | QLCDNumber | digitCount:18 |
開始 | QPushButton | objectName:btn_start |
停止 | QPushButton | objectName:btn_stop |
暫停 | QPushButton | objectName:btn_pause |
打點 | QPushButton | objectName:btn_log |
textBrowser | QTextBrowser | / |
【注意:將LCDNumber設置為右對齊的常見設置為:將其digitCount屬性設置為18左右】
布局方式:
四個按鈕布局方式為水平布局,整體的布局方式為垂直布局。
四、主程序實現
4.1 mainwindow.h頭文件
頭文件中聲明五個槽函數,一個定時器對象,一個基本時間對象以及l(fā)cdNumber的時刻值,核心代碼如下:
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; //定時器對象 QTime baseTime; //時間對象——00:00:00 QString showStr; //lcdNumber的時刻值
4.2 mainwindow.cpp源文件
MainWindow主程序代碼為:
ptimer=new QTimer; //初始化對象 connect(ptimer,SIGNAL(timeout()),this,SLOT(updataTimeAndDisplay()));
定義更新和顯示時間函數:
void MainWindow::updataTimeAndDisplay() { QTime current=QTime::currentTime();//獲取系統(tǒng)當前時間 int t=this->baseTime.msecsTo(current); //兩者相減的時間之差 QTime showtime(0,0,0,0);//初始時間 showtime=showtime.addMSecs(t);//增加tms showStr=showtime.toString("hh:mm:ss:zzz"); //轉換為string類型 ui->lcdNumber->display(showStr); //顯示 }
定義點擊開始按鈕槽函數:
void MainWindow::on_btn_start_clicked() { baseTime=QTime::currentTime(); ptimer->start(1); }
定義點擊停止按鈕槽函數:
void MainWindow::on_btn_stop_clicked() { if(ui->btn_stop->text()=="停止"){ ptimer->stop(); ui->btn_stop->setText("清零"); ui->btn_start->setEnabled(false);//開始按鈕無法點擊 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);//開始按鈕可以點擊 ui->btn_pause->setEnabled(true); } }
定義點擊暫停按鈕槽函數:
void MainWindow::on_btn_pause_clicked() { static QTime pauseTime; //暫停時間【靜態(tài)】 if(ui->btn_pause->text()=="暫停"){ pauseTime=QTime::currentTime();//獲取點擊暫停時的當前時間 ptimer->stop(); ui->btn_pause->setText("繼續(xù)"); ui->btn_start->setEnabled(false);//開始按鈕無法點擊 ui->btn_stop->setEnabled(false); }else{ QTime cut=QTime::currentTime();//繼續(xù)時的時間 int t=pauseTime.msecsTo(cut);//差值 baseTime=baseTime.addMSecs(t); //后延相應的tms繼續(xù)計時 ptimer->start(1); ui->btn_pause->setText("暫停"); ui->btn_start->setEnabled(true);//開始按鈕可以點擊 ui->btn_stop->setEnabled(true); } }
定義點擊打點按鈕槽函數:
//打點 void MainWindow::on_btn_log_clicked() { ui->textBrowser->append(showStr);//添加到textBrowser中 }
五、效果演示
以上就是Qt實現簡易計時器的示例代碼的詳細內容,更多關于Qt計時器的資料請關注腳本之家其它相關文章!