1. 程式人生 > >Qt中進度條的簡單例項

Qt中進度條的簡單例項

Qt中有兩種進度條相關的類

一個是QProgressDialog和QProgressBar

例項:

bool ok;
    int num=FileNumLineEdit->text().toInt(&ok);
    //ok的作用在於先檢測資料是否合理

    if(comboBox->currentIndex()==0){
//        progressBar->setRange(0,num);
        progressBar->setMinimum(0);
        progressBar->setMaximum(num);
        for(int i=1;i<num+1;i++){
               progressBar->setValue(i);
        }
    }
    else{
        QProgressDialog *progressDialog=new QProgressDialog(this);
        QFont font("ZYSong18030",12);
        progressDialog->setFont(font);

        progressDialog->setWindowModality(Qt::WindowModal);
        /*
         * 設定進度對話方塊採用模態方式進行顯示,即顯示進度的同時,其他視窗不響應輸入訊號
         */
        progressDialog->setMinimumDuration(1);
        /*
         * 設定進度對話方塊需要操作的最短時間,設定為5秒,預設是4秒
         * 如果時間短於minimumduration,則對話方塊無法出現
         */
        progressDialog->setWindowTitle(tr("Please Wait"));
        progressDialog->setLabelText(tr("Copying..."));
        progressDialog->setCancelButtonText(tr("Cancel"));
        /*
         *設定進度對話方塊的取消按鈕的顯示文字
         */
        progressDialog->setRange(0,num);
        for(int i=1;i<num+1;i++){
            progressDialog->setValue(i);
            if(progressDialog->wasCanceled())
                   return ;
        }
    }

但是有一個問題,使用該方法利用QProgressBar類實現進度條會出現中途未響應的情況,


據說應該要開個執行緒然後訊號槽重新整理,不知道,哈哈。