欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用QT設(shè)計秒表功能

 更新時間:2022年08月04日 14:12:54   作者:vampirebo  
這篇文章主要為大家詳細(xì)介紹了利用QT設(shè)計秒表功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了QT設(shè)計秒表功能的具體代碼,供大家參考,具體內(nèi)容如下

一、窗口界面的設(shè)置

可以使用屬性欄digitCount來設(shè)計此時0的初始位置

二、代碼的編寫

1、確定時間->每間隔一秒調(diào)用一個update函數(shù)(進(jìn)行換算)或者直接調(diào)用QT里面的time類;
2、確定顯示的方式;
3、每間隔一段時間調(diào)用顯示來達(dá)到動態(tài)效果;
4、這里應(yīng)該查看Qtime/Qlcd的help手冊
5、在對定時器聲明時要注意需要聲明成指針,后面的槽函數(shù)發(fā)出信號者要求是指針類型;
6、利用基準(zhǔn)時間與當(dāng)前時間的差值來顯示計時器;
7、設(shè)置暫停鍵的時候需要注意的是,可以給按鍵設(shè)置兩個功能,分別是暫停和繼續(xù)形成一個循環(huán),但是需要注意是,當(dāng)我們暫停后再繼續(xù)這段時間也是計算在內(nèi)的,當(dāng)再次顯示的時候,這時將會出現(xiàn)跳躍,這是因為我們顯示時間的時候用的是當(dāng)前時間與基準(zhǔn)時間的差值來計算的。解決的辦法是:
獲取暫停前和暫停后的值,保存下來,當(dāng)再次開始計算時減去這部分時間即可。
8、還有注意設(shè)置每個按鍵的可用性(Enabled)

代碼如下:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <Qtimer>
#include <Qtime>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
? ? Q_OBJECT

public:
? ? explicit MainWindow(QWidget *parent = 0);
? ? ~MainWindow();

private slots:
? ? void updateTimeAndDisplay(); ? ?//槽函數(shù)


? ? void on_btn_start_clicked();

? ? void on_btn_stop_clicked();

? ? void on_btn_pause_clicked();

? ? void on_btn_log_clicked();

private:
? ? Ui::MainWindow *ui;
? ? QTimer *qtimer; ? ? ? ? ? ? ? ? //聲明一個定時器對象,聲明成指針對象
? ? QTime baseTime; ? ? ? ? ? ? ? ? //聲明一個時間對象
? ? QString showStr; ? ? ? ? ? ? ? ?//直接聲明
};

#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QString>

MainWindow::MainWindow(QWidget *parent) :
? ? QMainWindow(parent),
? ? ui(new Ui::MainWindow)
{
? ? ui->setupUi(this);
? ? this->qtimer = new QTimer; ? //實例構(gòu)造
? ? connect(this->qtimer,SIGNAL(timeout()),this,SLOT(updateTimeAndDisplay()));
}

MainWindow::~MainWindow()
{
? ? delete ui;
}

//計算基準(zhǔn)時間和當(dāng)前時間的差值來顯示秒表值(currentTime)
void MainWindow::updateTimeAndDisplay()
{
? ? QTime current = QTime::currentTime();
? ? int temp = this->baseTime.msecsTo(current); ? //計算差值
? ? QTime showTime(0,0,0,0);
? ? showTime = showTime.addMSecs(temp);
? ? showStr = showTime.toString("hh:mm:ss:zzz"); ?//時間轉(zhuǎn)換為字符串
? ? this->ui->lcdNumber->display(showStr);
}
void MainWindow::on_btn_start_clicked()
{
? ? this->baseTime = QTime::currentTime();
? ? this->qtimer->start(1);
? ? this->ui->btn_start->setEnabled(false); ? ?//設(shè)置按鍵的可用性

}

void MainWindow::on_btn_stop_clicked()
{
? ? if(this->ui->btn_stop->text() == "停止"){
? ? ? ? this->ui->btn_stop->setText("清零");
? ? ? ? this->qtimer->stop();
? ? ? ? this->ui->btn_start->setEnabled(false);
? ? ? ? this->ui->btn_pause->setEnabled(false);

? ? }else
? ? {
? ? ? ? this->ui->lcdNumber->display("00:00:00:000");
? ? ? ? this->ui->textBrowser->clear();
? ? ? ? this->ui->btn_stop->setText("停止");
? ? ? ? this->ui->btn_start->setEnabled(true);
? ? ? ? this->ui->btn_pause->setEnabled(true);

? ? }
}

//獲取暫停前后的值求差值
void MainWindow::on_btn_pause_clicked()
{
? ? static QTime pauseTime;
? ? if(this->ui->btn_pause->text() == "暫停"){
? ? ? ? pauseTime = QTime::currentTime();
? ? ? ? this->qtimer->stop();
? ? ? ? this->ui->btn_pause->setText("繼續(xù)");
? ? ? ? this->ui->btn_start->setEnabled(false);
? ? ? ? this->ui->btn_stop->setEnabled(false);
? ? }else
? ? {
? ? ? ? QTime cut = QTime::currentTime();
? ? ? ? int t = pauseTime.msecsTo(cut); ? ? ? ? //求差值
? ? ? ? this->baseTime = baseTime.addMSecs(t); ?//把暫停時間再給baseTime
? ? ? ? this->qtimer->start(1);
? ? ? ? this->ui->btn_pause->setText("暫停");
? ? ? ? this->ui->btn_start->setEnabled(true);
? ? ? ? this->ui->btn_stop->setEnabled(true);

? ? }

}

void MainWindow::on_btn_log_clicked()
{
? ? this->ui->textBrowser->append(showStr); //這里如果使用settext()將會覆蓋信息,不能追加顯示
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語言字符串左旋的兩種實現(xiàn)方法

    C語言字符串左旋的兩種實現(xiàn)方法

    匯編語言中有一種移位指令叫做循環(huán)左移(ROL),下面這篇文章主要給大家介紹了關(guān)于C語言字符串左旋的兩種實現(xiàn)方法,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • 帶你粗略了解C++回文鏈表

    帶你粗略了解C++回文鏈表

    這篇文章主要介紹了Python實現(xiàn)的判斷回文鏈表算法,結(jié)合實例形式分析了Python針對鏈表是否為回文鏈表進(jìn)行判斷的相關(guān)算法實現(xiàn)技巧,需要的朋友可以參考下
    2021-08-08
  • C語言 volatile與const同時使用應(yīng)注意的問題

    C語言 volatile與const同時使用應(yīng)注意的問題

    “volatile”的含義是“請不要做沒譜的優(yōu)化,這個值可能變掉的”,而并非“你可以修改這個值”。因此,它們本來就不是矛盾的
    2013-09-09
  • c++實現(xiàn)對輸入數(shù)組進(jìn)行快速排序的示例(推薦)

    c++實現(xiàn)對輸入數(shù)組進(jìn)行快速排序的示例(推薦)

    下面小編就為大家?guī)硪黄猚++實現(xiàn)對輸入數(shù)組進(jìn)行快速排序的示例(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • 使用C++遞歸求解跳臺階問題

    使用C++遞歸求解跳臺階問題

    這篇文章主要介紹了使用C++求解跳臺階問題的方法,通過遞歸算法來解決,不算難,文中給出了計算思路,需要的朋友可以參考下
    2016-02-02
  • Qt項目實戰(zhàn)之方塊游戲的實現(xiàn)

    Qt項目實戰(zhàn)之方塊游戲的實現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了如何利用Qt實現(xiàn)簡易的方塊游戲,文中的示例代碼講解詳細(xì),具有一定的參考價值,感興趣的小伙伴可以了解一下
    2023-03-03
  • C語言編程中常見的五種錯誤及對應(yīng)解決方案

    C語言編程中常見的五種錯誤及對應(yīng)解決方案

    這篇文章主要給大家分享的是C語言編程中常見的五種錯誤及對應(yīng)解決方案,詳細(xì)內(nèi)容就請跟小編一起進(jìn)入下面的文章內(nèi)容吧
    2021-10-10
  • C++ 中類的拷貝、賦值、銷毀的實例詳解

    C++ 中類的拷貝、賦值、銷毀的實例詳解

    這篇文章主要介紹了C++ 中類的拷貝、賦值、銷毀的實例詳解的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • VS2022新建項目時沒有ASP.NET Web應(yīng)用程序(.NET Framework)

    VS2022新建項目時沒有ASP.NET Web應(yīng)用程序(.NET Framework)

    本文主要介紹了VS2022新建項目時沒有ASP.NET Web應(yīng)用程序的解決,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-10-10
  • 如何用C語言生成簡單格式的xml

    如何用C語言生成簡單格式的xml

    本篇文章是對使用C語言生成簡單格式的xml的實現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05

最新評論