程序员人生 网站导航

【Qt5开发及实例】10、关于进度条的显示

栏目:框架设计时间:2015-01-14 08:45:32

平常我们下载东西总会有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下,下次给连接吧

连接:欲知后事如何,且听下回分解。吐舌头









------分隔线----------------------------
------分隔线----------------------------

最新技术推荐