进度条对话框的使用

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() << "复制成功!";
    }
}

posted @ 2025-04-24 11:23  上车去广西  阅读(27)  评论(0)    收藏  举报