ProgressBar 的基本應用
前言
應用程式常常需要顯示進度, Qt 提供 ProgressBar 來解決,這次會說明在 UI 編輯器裡編輯與用程式來編輯的作法,在此做個紀錄。內容
先到 [ GitLab ] HelloQt 下載範例,這次應用的專案路徑(HelloQt' directory)/ProgressBar/Basic,在 Qt Creator 開啟設計介面會看到以下
![]() |
| 範例的設計介面 |
圖中左側標示 ProgressBar 在工具箱的位置。執行結果如下
![]() |
| 範例的執行結果 |
範例會在程式開啟時設定 ProgressBar 為 85% ,由於有綁定事件,當數值被設定後會顯示相關偵錯訊息。接著看到 ProgressBar 的屬性,如下圖
![]() |
| ProgressBar 的屬性 |
注意"minimum"、"maximum"與"value",這三個屬性會決定最後顯示的百分比,算法是"value" / ("maximum" - "minimum")。
在程式控制方面,看到 MainWindow::MainWindow() ,程式碼如下
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//
connect( ui->progressBar , &QProgressBar::valueChanged , this , &MainWindow::onProgressBarValueChanged );
//
ui->progressBar->setValue(851);
}
程式的開頭會綁定事件,接著將"value"設成851,由於"minimum"與"maximum"分別為 0 與 1000 ,所以依據算法會得到 85% ,由於採用"int"為資料型態,所以小數以後會自動捨去,接著看到事件的部分
void MainWindow::onProgressBarValueChanged(int value)
{
qDebug( "New value:%ld" , ui->progressBar->value() );
//
int newPersent = ( ( ui->progressBar->value() - ui->progressBar->minimum() ) * 100) / (ui->progressBar->maximum() - ui->progressBar->minimum() );
qDebug( "New persent:%ld" , newPersent );
}
"value"的部分很簡單直接透 value() 提取即可,但如果要拿出百分比的話就比較麻煩,因為 QProgressBar 不提供直接提取百分比,所以就只能自己算,算法雖然簡單,但程式很容易冗長,可以的話就寫成一個 function。



沒有留言:
張貼留言