版权声明:欢迎大佬们指点 https://blog.csdn.net/bloke_come/article/details/82761961
1、进度对话框的使用方法有两种:模态方法和非模态方法。
模态方式的使用比较简单,但必须使用processEvent()使事件循环保持正常进行状态,保证不会堵塞。
非模态方式,需要通过QTime实现定时设置进度条的值。
2、标准进度条
包含一个进度显示条、一个取消按钮和一个标签
Process方式
m_ProgressBatLevel = new QProgressBar(this);
m_ProgressBatLevel->setOrientation(Qt::Horizontal); // 显示方向 Horizontal 水平 Vertical 垂直
m_ProgressBatLevel->setFixedWidth(350);
m_ProgressBatLevel->setMinimum(56);
m_ProgressBatLevel->setMaximum(70);
m_ProgressBatLevel->setValue(70);
m_ProgressBatLevel->setStyleSheet(" QProgressBar{ border: none; color: white; text-align: center; background: rgb(68, 69, 73); }"
" QProgressBar::chunk{border: none;background: rgb(0, 160, 230);}");
double dProgress = (m_ProgressBatLevel->value() - m_ProgressBatLevel->minimum()) * 100.0
/ (m_ProgressBatLevel->maximum() - m_ProgressBatLevel->minimum());
m_ProgressBatLevel->setFormat(QString::fromLocal8Bit("%1%").arg(QString::number(dProgress, 'f', 1)));// 设置当前进度条状态
m_ProgressBatLevel->setAlignment(Qt::AlignRight | Qt::AlignVCenter); // 对齐方式
//m_ProgressBatLevel->setInvertedAppearance(true); // 反方向
QProgressDialog 方式
//创建一个进度对话框
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); // 设置进度对话框的步进范围
for(int i=1;i<num+1;i++)
{
progressDialog->setValue(i);
if(progressDialog->wasCanceled())
return;
}