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

如何让程序等待一段时间
QTime t;
t.start();
while(t.elapsed()<1000);
这种死循环也是一种常见错误用法。但改成正确的还是比较简单的:

QTime t;
t.start();
while(t.elapsed()<1000)
QCoreApplication::processEvents();

参考:http://dreamylights.blog.51cto.com/1163218/1538220

        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();

http://www.qtcn.org/bbs/read-htm-tid-60831.html

原文地址:https://www.cnblogs.com/findumars/p/4296600.html