Qt QProcessDialog(進度對話框)使用


題記:在GUI程序中,如果需要處理的某一個操作需要的時間較長時,主界面會出現假死,但實際上操作還是在進行,為了處理這種現象,讓用戶感覺操作一直在進行,可以用到進度條,QT提供了封裝的QProcessDialog類實現該功能,該類繼承自QDialog類,顯示操作的進度。

官方文檔http://qt-project.org/doc/qt-4.8/qprogressdialog.html

主要的問題:進度值的獲取

用法:幫助文檔里的寫的已經很清楚了,有相關接口的用法,還提供了一些實例。

1. 以模態對話框的形式顯示

 1 QProgressDialog progress("Copying files...", "Abort Copy", 0, numFiles, this);
 2 
 3    for (int i = 0; i < numFiles; i++)
 4   {
 5          progress.setValue(i);
 6 
 7          if (progress.wasCanceled())
 8              break;
 9          //... copy one file
10    }
11    progress.setValue(numFiles);

這是文檔中的例子,首先定義一個對象,然后進行對話框的一些初始化,調用方法對進度對話框進行一些設置,這里除了可以調用QProcessDialog類的方法,也可以調用QDialog類的方法,比如:

progress.setWindowTitle("處理進度");
progress.setWindowIcon(QIcon("XX.png"));

不一定要按照這個代碼段的方式進行,進度條最主要的就是setvalue(int)這個方法,在哪里加入這句話設置進度值根據實際情況而定。

構造函數:QProgressDialog ( const QString & labelText,    //對話框中的正文

                                       const QString & cancelButtonText,      //取消按鈕文字

                                       int minimum,    //最小值

                                       int maximum,   //最大值

                                       QWidget * parent = 0,  //父窗口,可以不填該參數

                                       Qt::WindowFlags f = 0 )  //可以不填

2. 以非模態形式顯示

待學習。。。

后記:利用QProcessDialog類可以解決處理耗時操作給人帶來的軟件死掉的假象。當然,這是最簡單的解決方法,多線程也可以解決這種問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM