日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

C++ Qt开发:ProgressBar进度条组件

發(fā)布時間:2023/12/24 windows 31 coder
生活随笔 收集整理的這篇文章主要介紹了 C++ Qt开发:ProgressBar进度条组件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Qt 是一個跨平臺C++圖形界面開發(fā)庫,利用Qt可以快速開發(fā)跨平臺窗體應用程序,在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,實現(xiàn)圖形化開發(fā)極大的方便了開發(fā)效率,本章將重點介紹ProgressBar進度條組件的常用方法及靈活運用。

ProgressBar(進度條)是在Qt中常用的用戶界面組件之一,用于顯示任務的完成進度。它通常以一個水平或垂直的條形圖形式展示,表示任務已完成的比例。進度條組件提供了一種直觀的方式來顯示任務的進度,讓用戶清晰地了解任務的完成情況。其還可根據(jù)需要在水平或垂直方向上顯示,以適應不同的界面布局。

以下是QProgressBar類的一些常用方法的說明和概述,以表格形式列出:

方法 描述
QProgressBar(QWidget *parent = nullptr) 構(gòu)造函數(shù),創(chuàng)建一個組件對象。
setRange(int minimum, int maximum) 設置組件的范圍,即任務的最小和最大值。
setValue(int value) 設置組件的當前值,即任務已完成的進度。
value() const 獲取組件的當前值。
setMinimum(int minimum) 設置組件的最小值。
setMaximum(int maximum) 設置組件的最大值。
reset() 重置組件,將當前值設置為最小值。
minimum() const 獲取組件的最小值。
maximum() const 獲取組件的最大值。
text() const 獲取組件顯示的文本,通常是百分比值。
setFormat(const QString &format) 設置組件顯示文本的格式,支持百分比等。
setAlignment(Qt::Alignment alignment) 設置組件文本的對齊方式。
setInvertedAppearance(bool invert) 設置組件是否顯示為反向進度(從右到左)。
setOrientation(Qt::Orientation orientation) 設置組件的方向,可以是水平或垂直。
setStyleSheet(const QString &styleSheet) 設置組件的樣式表。
setFormat(const QString &format) 設置組件的顯示格式。
setAlignment(Qt::Alignment alignment) 設置組件文本的對齊方式。

這些方法提供了對QProgressBar進行配置、管理和與之交互的靈活性。你可以根據(jù)具體的應用需求使用這些方法,使QProgressBar在你的Qt應用程序中按照期望的方式工作。

說到進度條組件就不得不提起定時器類,因為進度條組件往往需要配合定時器一起使用,QTimer是 Qt 中用于創(chuàng)建定時器的類,它允許你在一段時間間隔后執(zhí)行特定的操作。以下是 QTimer 類的一些常用方法的說明和概述,以表格形式列出:

方法 描述
QTimer(QObject *parent = nullptr) 構(gòu)造函數(shù),創(chuàng)建一個定時器對象。
start(int msec) 啟動定時器,指定觸發(fā)時間間隔(以毫秒為單位)。
stop() 停止定時器,阻止進一步的定時觸發(fā)。
setInterval(int msec) 設置定時器的觸發(fā)時間間隔。
setSingleShot(bool singleShot) 設置定時器是單次觸發(fā)還是重復觸發(fā)。
isActive() const 檢查定時器是否處于活動狀態(tài)。
remainingTime() const 返回離下一次定時器觸發(fā)還有多少時間,如果不活動返回 -1。
timeout 在定時器超時時發(fā)出,可以與槽函數(shù)連接以執(zhí)行相應操作。
setTimerType(Qt::TimerType atype) 設置定時器的類型,可以是 PreciseTimerCoarseTimer
timerType() const 返回定時器的類型。
setSingleShot(bool singleShot) 設置定時器是單次觸發(fā)還是重復觸發(fā)。
interval() const 返回定時器的觸發(fā)時間間隔。
timeout() 返回 timeout 信號的 QMetaObject::Connection 對象。

這些方法提供了對 QTimer 進行配置、管理和與之交互的靈活性。你可以根據(jù)具體的應用需求使用這些方法,使 QTimer 在你的 Qt 應用程序中按照期望的方式工作。

首先在MainWindow主函數(shù)中通過connect設置綁定定時器,并在匿名函數(shù)中對數(shù)值進行判斷,如果到達了進度條最大值則直接使用my_timer->stop()停止計時,否則每次設置進度條加一,代碼如下所示;

#include <QTimer>

// 全局定時器變量指針
QTimer *my_timer;

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 聲明定時器
     my_timer = new QTimer(this);

     // 綁定一個匿名函數(shù)
     connect(my_timer,&QTimer::timeout,[=]{
         static int x = 0;

         // 判斷是否到達了進度條的最大值
         if(x != 100)
         {
             x++;
             ui->progressBar_Up->setValue(x);
             ui->progressBar_Down->setValue(int(100-x));
         }
         else
         {
             x=0;
             my_timer->stop();
         }
     });
}

當用戶點擊初始化按鈕時,我們首先將兩個進度條使用reset()屬性進行重置,接著設置progressBar_Down為最大值狀態(tài),代碼如下所示;

// 初始化進度條
void MainWindow::on_pushButton_clear_clicked()
{
    // 清空進度條
    ui->progressBar_Up->reset();
    ui->progressBar_Down->reset();

    // 設置遞減進度條最大值100
    ui->progressBar_Down->setValue(100);
}

啟動與停止定時器流程一致,首先通過my_timer->isActive()來驗證定時器是否啟動中,日過不是則my_timer->start(100)啟動,如果是則my_timer->stop()停止。

// 啟動定時器,并設置周期為100毫秒
void MainWindow::on_pushButton_start_clicked()
{
    if(my_timer->isActive() == false)
    {
        my_timer->start(100);
    }
}

// 停止定時器
void MainWindow::on_pushButton_stop_clicked()
{
    if(my_timer->isActive() == true)
    {
        my_timer->stop();
    }
}

運行程序,首先點擊初始化按鈕設置進度條的狀態(tài)值,然后讀者可點擊啟動定時器和停止定時器,如下圖所示;

總結(jié)

以上是生活随笔為你收集整理的C++ Qt开发:ProgressBar进度条组件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。