QT进度条的使用QProgressBar与QProgressDialog的使用

QProgressBar与QProgressDialog的使用

程序

//.h
#ifndef PROGRESSDLG_H
#define PROGRESSDLG_H

#include <QDialog>
#include <QLabel>
#include <QLineEdit>
#include <QProgressBar>
#include <QComboBox>
#include <QPushButton>
#include <QGridLayout>


class ProgressDlg : public QDialog
{
    Q_OBJECT

public:
    ProgressDlg(QWidget *parent = 0);
    ~ProgressDlg();
private slots:
    void startProgress();
private:
    QLabel *FileNum;
    QLineEdit *FileNumLineEdit;
    QLabel *ProgressType;
    QComboBox *comboBox;
    QProgressBar *progressBar;
    QPushButton *starBtn;
    QGridLayout *mainLayout;
};

#endif // PROGRESSDLG_H

.cpp
#include "progressdlg.h"
#include <QProgressDialog>
#include <QFont>

ProgressDlg::ProgressDlg(QWidget *parent)
    : QDialog(parent)
{
    QFont font("ZYSong18030",12);
    setFont(font);
    setWindowTitle("Progress");
    FileNum=new QLabel;
    FileNum->setText("文件数目");
    FileNumLineEdit=new QLineEdit;
    FileNumLineEdit->setText("100000");
    ProgressType=new QLabel;
    ProgressType->setText("显示类型:");
    comboBox=new QComboBox;
    comboBox->addItem("progressBar");
    comboBox->addItem("progressDialog");
    progressBar=new QProgressBar;
    starBtn=new QPushButton;
    starBtn->setText("开始");
    mainLayout=new QGridLayout(this);
    mainLayout->addWidget(FileNum,0,0);
    mainLayout->addWidget(FileNumLineEdit,0,1);
    mainLayout->addWidget(ProgressType,1,0);
    mainLayout->addWidget(comboBox,1,1);
    mainLayout->addWidget(progressBar,2,0,1,2);
    mainLayout->addWidget(starBtn,3,1);
    mainLayout->setMargin(15);
    mainLayout->setSpacing(10);
    connect(starBtn,SIGNAL(clicked()),this,SLOT(startProgress()));

}

ProgressDlg::~ProgressDlg()
{

}

void ProgressDlg::startProgress()
{
    bool ok;
    int num=FileNumLineEdit->text().toInt();
    if(comboBox->currentIndex()==0)//采用进度条的方式显示进度
    {
        progressBar->setRange(0,num);//设置进度条的步进范围
        for(int i=1;i<num+1;i++)
        {
            progressBar->setValue(i);//步进值加一
        }
    }
    else if(comboBox->currentIndex()==1)//采用进度对话框显示进度
    {
        QProgressDialog*progressDialog=new QProgressDialog(this);
        QFont font("ZYSong18030",12);
        progressDialog->setFont(font);
        progressDialog->setWindowModality(Qt::WindowModal);//设置进度对话框采用模态方式进行显示,即在显示进度的同时,其他窗口将不相应输入信号
        progressDialog->setMinimumDuration(5);//设置进度对话框出现需要等待的的时间,默认为4s
        progressDialog->setWindowTitle("Please Wait");
        progressDialog->setLabelText("Copying~~~");
        progressDialog->setRange(0,num);
        for(int i=1;i<num+1;i++)
        {
            progressDialog->setValue(i);
            if(progressDialog->wasCanceled())//点击取消键停止
                return;
        }
    }
}

效果展示

在这里插入图片描述
在这里插入图片描述

发布了31 篇原创文章 · 获赞 3 · 访问量 294

猜你喜欢

转载自blog.csdn.net/weixin_44011306/article/details/105246327