首页 > 代码库 > 【Qt5开发及实例】10、关于进度条的显示
【Qt5开发及实例】10、关于进度条的显示
平常我们下载东西总会有一个显示下载了多少的进度条,我们今天来实现一下。
这里有两种显示方式
可以选择,第一个是用了
QProgressBar控件,第二个是用了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")); //第一种显示方式 comboBox->addItem(tr("progressDialog")); //第二种显示方式 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) //如果选择的是第一个的话ProgressBar模式 { progressBar->setRange(0, num); //设置范围,最小值和最大值 for(int i = 1; i <= num; ++i) { progressBar->setValue(i); //设置当前值 cout<<i<<endl; } } else if(comboBox->currentIndex() == 1) //如果选择的是第二个显示方式的话, 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 ,单纯为了大家爽一爽!!
让你开心,让你笑
我去吧项目上传一下,下次给连接吧
连接:欲知后事如何,且听下回分解。
【Qt5开发及实例】10、关于进度条的显示
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。