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。
沒有留言:
張貼留言