一般步骤
- 选择进度条的显示方式
- 设置进度条上下界
- 显示…
小demo源代码
#include "progressdlg.h"
#include <QProgressDialog>
ProgressDlg::ProgressDlg(QWidget *parent)
: QDialog(parent)
{
//创建界面
this->setWindowTitle("进度条");
fileNums = new QLabel;
fileNumEdit = new QLineEdit;
pTypes = new QLabel;
combox = new QComboBox;
progress = new QProgressBar;
startBtn = new QPushButton;
main = new QGridLayout(this);
main->addWidget(fileNums,0,0);
main->addWidget(fileNumEdit,0,1);
main->addWidget(pTypes,1,0);
main->addWidget(combox,1,1);
main->addWidget(progress,2,0,1,2);
main->addWidget(startBtn,3,1);
main->setSpacing(10);
main->setMargin(15);
fileNums->setText("文件数目:");
pTypes->setText("显示类型:");
fileNumEdit->setText("10000");
combox->addItem("progressBar");
combox->addItem("ProgressDialog");
startBtn->setText("开始");
connect(startBtn,SIGNAL(clicked(bool)),this,SLOT(startProgress()));
}
void ProgressDlg::startProgress(){
bool ok;
int nums = fileNumEdit->text().toInt(&ok);
if(ok){
if(combox->currentIndex()==0){
progress->setRange(0,nums);
for(int i =0;i<nums;i++){
progress->setValue(i);
}
}else if(combox->currentIndex()==1){
//创建对话框进度条
QProgressDialog* pd = new QProgressDialog(this);
pd->setWindowModality(Qt::WindowModal);
pd->setMinimumDuration(1);//系统根据所需完成的工作量估算一个预计花费的时间,若大于此预计时间则显示进度条
pd->setWindowTitle("请稍等...");
pd->setLabelText("loading");
pd->setCancelButtonText("取消");
pd->setRange(0,nums);
for(int i =0;i<nums;i++){
pd->setValue(i);//此处注意是对话框中的进度条
if(pd->wasCanceled()){
return;
}
}
}
}
}
ProgressDlg::~ProgressDlg()
{
}
运行效果