延时过程中要加上app.processEvents(),进度条里也要加上这句

     如何让程序等待一段时间

QTime t;
t.start();
while(t.elapsed()<1000);

     这种死循环也是一种常见错误用法。但改成正确的还是比较简单的:

QTime t;
t.start();
while(t.elapsed()<1000)
QCoreApplication::processEvents();
        QProgressDialog *progressDialog=new QProgressDialog(this);
        QFont font("ZYSong18030",12);
        progressDialog->setFont(font);
        progressDialog->setWindowModality(Qt::WindowModal);
        progressDialog->setMinimumDuration(5);
        progressDialog->setWindowTitle(tr("Please Wait"));
        progressDialog->setLabelText(tr("Copying..."));
        progressDialog->setCancelButtonText(tr("Cancel"));
        progressDialog->setRange(0,num);                //num表示要传输的文件个数
        for(int i=1;i<num+1;i++)
        {
            progressDialog->setValue(i);
            QApplication::processEvents();
            if(progressDialog->wasCanceled())
                return;
        }
        ProgressDialog->show();

猜你喜欢

转载自blog.csdn.net/lengyuezuixue/article/details/81154051