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;isetValue(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;isetValue(i);
            if(progressDialog->wasCanceled())
                   return ;
        }
    }

但是有一个问题,使用该方法利用QProgressBar类实现进度条会出现中途未响应的情况,

Qt中进度条的简单实例_第1张图片

据说应该要开个线程然后信号槽刷新,不知道,哈哈。

你可能感兴趣的:(Qt)