《Qt5+进度条》

版权声明:本文为博主原创文章,未经博主允许不得转载,博客地址:http://blog.csdn.net/mars_xiaolei。 https://blog.csdn.net/mars_xiaolei/article/details/83545500

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

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

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
private slots:
    void startProgress();
private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFont>
#include <QProgressDialog>//进度条对话框

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QFont font("ZYSong18030",12);
    setFont(font);
    setWindowTitle(tr("Progress"));

    ui->FileNum->setText(tr("文件数目:"));
    ui->FileNumLineEdit->setText(tr("100000"));

    ui->ProgressType->setText(tr("显示类型:"));
    ui->comboBox->addItem(tr("progressBar"));
    ui->comboBox->addItem(tr("progressDialog"));

    ui->starBtn->setText(tr("开始"));

    connect(ui->starBtn,SIGNAL(clicked()),this,SLOT(startProgress()));
}

void MainWindow::startProgress()
{
    bool ok;
    int num =ui->FileNumLineEdit->text().toInt(&ok);

    if(ui->comboBox->currentIndex()==0)                   //ProgressBar
    {
        ui->progressBar->setRange(0,num);
        for(int i=1;i<num+1;i++)
        {
            ui->progressBar->setValue(i);
        }
    }
    else if(ui->comboBox->currentIndex()==1)             //ProgressDialog
    {
        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;
        }
    }
}

MainWindow::~MainWindow()
{
    delete ui;
}

结果显示

完整代码链接:https://pan.baidu.com/s/15Ik-HHu1FNK1FMWDlTwICg 
提取码:hrgy

猜你喜欢

转载自blog.csdn.net/mars_xiaolei/article/details/83545500