【Qt5開發及實例】10、關于進度條的顯示
來源:程序員人生 發布時間:2015-01-14 08:45:32 閱讀次數:6533次
平常我們下載東西總會有1個顯示下載了多少的進度條,我們今天來實現1下。


這里有兩種顯示方式
可以選擇,第1個是用了
QProgressBar控件,第2個是用了QProgressDialog控件
progressdlg.h
/**
* 書本:【Qt5開發及實例】
* 功能:為了實現進度條的顯示
* 文件:progressdlg.h
* 時間:2015年1月2日15:27:10
* 作者:cutter_point
*/
#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 *startBtn;
QGridLayout *mainLayout;
};
#endif // PROGRESSDLG_H
progressdlg.cpp
/**
* 書本:【Qt5開發及實例】
* 功能:完成界面的顯示的定義
* 文件:progressdlg.cpp
* 時間:2015年1月2日15:27:37
* 作者:cutter_point
*/
#include "progressdlg.h"
#include <QProgressDialog> //這個顯示進度條的慢速進程的進度框
#include <QFont>
#include <iostream>
using namespace std;
ProgressDlg::ProgressDlg(QWidget *parent)
: QDialog(parent)
{
//完成界面的初始化
QFont font("宋體", 12);
setFont(font);
setWindowTitle(tr("Progress"));
FileNum = new QLabel;
FileNum->setText(tr("the file num")); //文件的數目
FileNumLineEdit = new QLineEdit;
FileNumLineEdit->setText(tr("100000")); //默許值
ProgressType = new QLabel;
ProgressType->setText(tr("the show type")); //顯示的類型
comboBox = new QComboBox;
comboBox->addItem(tr("progressBar")); //第1種顯示方式
comboBox->addItem(tr("progressDialog")); //第2種顯示方式
progressBar = new QProgressBar;
progressBar->setFormat("%p%"); //按完成的百分比顯示
startBtn = new QPushButton;
startBtn->setText(tr("begin")); //開始
// cout<<"???3333"<<endl;
mainLayout = new QGridLayout(this); //網格布局
// cout<<"???3333____?????11111"<<endl;
mainLayout->addWidget(FileNum, 0, 0);
mainLayout->addWidget(FileNumLineEdit, 0, 1);
// cout<<"???33333__?????1111111___???222222"<<endl;
mainLayout->addWidget(ProgressType, 1, 0);
// cout<<"???3333____??????22222"<<endl;
mainLayout->addWidget(comboBox, 1, 1);
mainLayout->addWidget(progressBar, 2, 0, 1, 2);
mainLayout->addWidget(startBtn, 3, 1);
// cout<<"???3333____111111111"<<endl;
mainLayout->setMargin(15); //設置間隔大小
mainLayout->setSpacing(10);
// cout<<"???4444"<<endl;
//連接
connect(startBtn, SIGNAL(clicked()), this, SLOT(startProgress()));
}
//進度條的具體工作顯示槽函數
void ProgressDlg::startProgress()
{
bool ok;
int num = FileNumLineEdit->text().toInt(&ok); //把文本轉換為int類型值
if(comboBox->currentIndex() == 0) //如果選擇的是第1個的話ProgressBar模式
{
progressBar->setRange(0, num); //設置范圍,最小值和最大值
for(int i = 1; i <= num; ++i)
{
progressBar->setValue(i); //設置當前值
cout<<i<<endl;
}
}
else if(comboBox->currentIndex() == 1) //如果選擇的是第2個顯示方式的話, ProgressDialog
{
QProgressDialog *progressDialog = new QProgressDialog(this);
QFont font("宋體", 12);
progressDialog->setFont(font);
progressDialog->setWindowModality(Qt::WindowModal); //采取摹擬的方式進行顯示,即顯示進度的同時,其他窗口將不響應輸入信號
progressDialog->setMinimumDuration(5000); //設置進度條顯示的等待時間,5秒
progressDialog->setWindowTitle(tr("Please Wait")); //設置標題的顯示時間
progressDialog->setLabelText(tr("Copying..."));
progressDialog->setCancelButtonText(tr("Cancel")); //退出按鈕名字
progressDialog->setRange(0, num); //設置顯示的范圍
for(int i = 1; i <= num; ++i)
{
progressDialog->setValue(i); //設置當前的值
// cout<<i<<endl;
//如果檢測到按鈕取消被激活,就跳出去
if(progressDialog->wasCanceled())
return;
}
}
}
ProgressDlg::~ProgressDlg()
{
}
main.cpp
#include "progressdlg.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
ProgressDlg w;
w.show();
return a.exec();
}
OK ,單純為了大家爽1爽!!


讓你開心,讓你笑
我去吧項目上傳1下,下次給連接吧
連接:欲知后事如何,且聽下回分解。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈