日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Qt實現簡易計時器的示例代碼_C 語言

作者:wendy_ya ? 更新時間: 2022-08-10 編程語言

一、項目介紹

計時器實現四個功能:開始計時、停止計時、暫停計時以及打點。當點擊暫停時,開始按鈕和停止按鈕無法點擊,此時暫停按鈕變為繼續。當點擊停止時,開始按鈕和暫停按鈕無法點擊,此時停止按鈕變為清零。

二、項目基本配置

新建一個Mainwindow界面。基本配置與其他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頭文件

頭文件中聲明五個槽函數,一個定時器對象,一個基本時間對象以及lcdNumber的時刻值,核心代碼如下:

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();//獲取系統當前時間
    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;  //暫停時間【靜態】
    if(ui->btn_pause->text()=="暫停"){
        pauseTime=QTime::currentTime();//獲取點擊暫停時的當前時間
        ptimer->stop();
        ui->btn_pause->setText("繼續");
        ui->btn_start->setEnabled(false);//開始按鈕無法點擊
        ui->btn_stop->setEnabled(false);
    }else{
        QTime cut=QTime::currentTime();//繼續時的時間
        int t=pauseTime.msecsTo(cut);//差值
        baseTime=baseTime.addMSecs(t);  //后延相應的tms繼續計時
        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中
}

五、效果演示

原文鏈接:https://wendy.blog.csdn.net/article/details/120682307

欄目分類
最近更新