void MainWindow::on_pushButton_clicked()
{
bool Canceled = false;
QProgressDialog dialog("文件复制进度", "取消", 0, 50000, this);
dialog.setWindowTitle("进度对话框"); // 设置窗口标题
dialog.setWindowModality(Qt::WindowModal); // 将对话框设置为模态
dialog.show();
// dialog.exec(); // 不用用此方法,否则会堵塞导致下面的for无法执行
for (int i=0; i < 50000; i++)
{
dialog.setValue(i); // 设置进度条的当前值
QCoreApplication::processEvents(); // 避免界面冻结
if (dialog.wasCanceled())
{
// 按下取消按钮则中断
Canceled = true;
break;
}
}
dialog.setValue(50000); // 这样才能显示100%,因为for循环中少加了一个数
if(Canceled)
{
qDebug() << "复制失败!";
}
else
{
qDebug() << "复制成功!";
}
}