首页 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
资讯 业界资讯 软件杂谈 编程开发 网站建设 网络观查 搜索引擎 移动应用 网站运营 网络地图
开发 移动开发 Web前端 架构设计 编程语言 互联网 数据库 系统运维 云计算 开发杂谈
[架构设计] 【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 ,单纯为了大家爽一爽!!


让你开心,让你笑 大笑

我去吧项目上传一下,下次给连接吧
连接:欲知后事如何,且听下回分解。 吐舌头



 此文从网络中自动搜索生成,不代表本网站赞成被搜索网站的内容或立场    查看原文
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 新闻资讯 小游戏 Chinese Culture 股票 三丰软件 开发 中国文化 网文精选 阅读网 看图 日历 万年历 2018年10日历
2018-10-22 0:42:46
 
  网站联系 软件世界网-www.sjsjw.com ©2014 蜀ICP备06016416号 三峰网旗下网站