打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Qt-----进度条QProgressBar
[cpp] view plaincopyprint?
  1. //MyDlg.h  
  2. #ifndef MYDLG_H  
  3. #define MYDLG_H  
  4. #include <QDialog>  
  5. class QLabel;  
  6. class QLineEdit;  
  7. class QComboBox;  
  8. class QProgressBar;  
  9. class QPushButton;  
  10. class QGridLayout;  
  11. class MyDlg : public QDialog  
  12. {  
  13.   Q_OBJECT  
  14. public:  
  15.   MyDlg(QWidget *parent = 0);  
  16. private slots:  
  17.   void startProgress();  
  18. private:  
  19.   QLabel *fileNum;  
  20.   QLineEdit *fileNumLineEdit;  
  21.   QLabel *progressType;  
  22.   QComboBox *comboBox;  
  23.   QProgressBar *progressBar;  
  24.   QPushButton *startBtn;  
  25.   QGridLayout *mainLayout;  
  26. };  
  27. #endif // MYDLG_H  
//MyDlg.h#ifndef MYDLG_H#define MYDLG_H#include <QDialog>class QLabel;class QLineEdit;class QComboBox;class QProgressBar;class QPushButton;class QGridLayout;class MyDlg : public QDialog{  Q_OBJECTpublic:  MyDlg(QWidget *parent = 0);private slots:  void startProgress();private:  QLabel *fileNum;  QLineEdit *fileNumLineEdit;  QLabel *progressType;  QComboBox *comboBox;  QProgressBar *progressBar;  QPushButton *startBtn;  QGridLayout *mainLayout;};#endif // MYDLG_H


 

[cpp] view plaincopyprint?
  1. //MyDlg.cpp  
  2. #include <QDialog>  
  3. #include <QLabel>  
  4. #include <QLineEdit>  
  5. #include <QComboBox>  
  6. #include <QPushButton>  
  7. #include <QProgressBar>  
  8. #include <QProgressDialog>  
  9. #include <QWidget>  
  10. #include <QGridLayout>  
  11. #include 'MyDlg.h'  
  12. MyDlg::MyDlg(QWidget *parent) : QDialog(parent)  
  13. {  
  14.   setWindowTitle(tr('Progress'));  
  15.   fileNum = new QLabel;  
  16.   fileNum->setText(tr('文件数目:'));  
  17.   fileNumLineEdit = new QLineEdit;  
  18.   fileNumLineEdit->setText(tr('10000'));  
  19.   progressType = new QLabel;  
  20.   progressType->setText(tr('显示类型'));  
  21.   comboBox = new QComboBox;  
  22.   comboBox->addItem(tr('progressBar'));  
  23.   comboBox->addItem(tr('progressDialog'));  
  24.   progressBar = new QProgressBar;  
  25.   startBtn = new QPushButton;  
  26.   startBtn->setText(tr('开始'));  
  27.   mainLayout = new QGridLayout(this);  
  28.   mainLayout->addWidget(fileNum, 0, 0, 1, 1);  
  29.   mainLayout->addWidget(fileNumLineEdit, 0, 1, 1, 1);  
  30.   mainLayout->addWidget(progressType, 1, 0, 1, 1);  
  31.   mainLayout->addWidget(comboBox, 1, 1, 1 ,1);  
  32.   mainLayout->addWidget(progressBar, 2, 1, 1, 2);  
  33.   mainLayout->addWidget(startBtn, 3, 1, 1, 1);  
  34.   mainLayout->setMargin(15);  
  35.   mainLayout->setSpacing(10);  
  36.   connect(startBtn, SIGNAL(clicked()), this, SLOT(startProgress()));  
  37. }  
  38. void MyDlg::startProgress()  
  39. {  
  40.   bool ok;  
  41.   int num = fileNumLineEdit->text().toInt(&ok);  
  42.   if(!ok)  
  43.   {  
  44.       return ;  
  45.   }  
  46.   if(comboBox->currentIndex() == 0)  
  47.   {  
  48.       progressBar->setRange(0, num);  
  49.       for(int i = 1; i <= num; i++)  
  50.       {  
  51.           progressBar->setValue(i);  
  52.       }  
  53.   }  
  54.   else  
  55.   {  
  56.       QProgressDialog *progressDlg=new QProgressDialog(this);  
  57.       QFont font('ZYSong18030',12);  
  58.       progressDlg->setFont(font);  
  59.       progressDlg->setWindowModality(Qt::WindowModal);  
  60.       progressDlg->setMinimumDuration(5);  
  61.       progressDlg->setWindowTitle(tr('please wait'));  
  62.       progressDlg->setLabelText(tr('正在复制......     '));  
  63.       progressDlg->setCancelButtonText(tr('取消'));  
  64.       progressDlg->setRange(0,num);  
  65.       for(int i = 1; i <= num; i++)  
  66.       {  
  67.           progressDlg->setValue(i);  
  68.           if(progressDlg->wasCanceled())  
  69.           {  
  70.               return ;  
  71.           }  
  72.       }  
  73.   }  
  74. }  
//MyDlg.cpp#include <QDialog>#include <QLabel>#include <QLineEdit>#include <QComboBox>#include <QPushButton>#include <QProgressBar>#include <QProgressDialog>#include <QWidget>#include <QGridLayout>#include 'MyDlg.h'MyDlg::MyDlg(QWidget *parent) : QDialog(parent){  setWindowTitle(tr('Progress'));  fileNum = new QLabel;  fileNum->setText(tr('文件数目:'));  fileNumLineEdit = new QLineEdit;  fileNumLineEdit->setText(tr('10000'));  progressType = new QLabel;  progressType->setText(tr('显示类型'));  comboBox = new QComboBox;  comboBox->addItem(tr('progressBar'));  comboBox->addItem(tr('progressDialog'));  progressBar = new QProgressBar;  startBtn = new QPushButton;  startBtn->setText(tr('开始'));  mainLayout = new QGridLayout(this);  mainLayout->addWidget(fileNum, 0, 0, 1, 1);  mainLayout->addWidget(fileNumLineEdit, 0, 1, 1, 1);  mainLayout->addWidget(progressType, 1, 0, 1, 1);  mainLayout->addWidget(comboBox, 1, 1, 1 ,1);  mainLayout->addWidget(progressBar, 2, 1, 1, 2);  mainLayout->addWidget(startBtn, 3, 1, 1, 1);  mainLayout->setMargin(15);  mainLayout->setSpacing(10);  connect(startBtn, SIGNAL(clicked()), this, SLOT(startProgress()));}void MyDlg::startProgress(){  bool ok;  int num = fileNumLineEdit->text().toInt(&ok);  if(!ok)  {      return ;  }  if(comboBox->currentIndex() == 0)  {      progressBar->setRange(0, num);      for(int i = 1; i <= num; i++)      {          progressBar->setValue(i);      }  }  else  {      QProgressDialog *progressDlg=new QProgressDialog(this);      QFont font('ZYSong18030',12);      progressDlg->setFont(font);      progressDlg->setWindowModality(Qt::WindowModal);      progressDlg->setMinimumDuration(5);      progressDlg->setWindowTitle(tr('please wait'));      progressDlg->setLabelText(tr('正在复制......     '));      progressDlg->setCancelButtonText(tr('取消'));      progressDlg->setRange(0,num);      for(int i = 1; i <= num; i++)      {          progressDlg->setValue(i);          if(progressDlg->wasCanceled())          {              return ;          }      }  }}


 

 

[cpp] view plaincopyprint?
  1. //main.cpp  
  2. #include <QApplication>  
  3. #include <QTextCodec>  
  4. #include 'MyDlg.h'  
  5. int main(int argc, char *argv[])  
  6. {  
  7.   QTextCodec::setCodecForTr(QTextCodec::codecForLocale());  
  8.   QApplication app(argc, argv);  
  9.   MyDlg md;  
  10.   md.show();  
  11.   return app.exec();  
  12. }  
//main.cpp#include <QApplication>#include <QTextCodec>#include 'MyDlg.h'int main(int argc, char *argv[]){  QTextCodec::setCodecForTr(QTextCodec::codecForLocale());  QApplication app(argc, argv);  MyDlg md;  md.show();  return app.exec();}


 

程序运行截图:

                    

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
[Qt 练习]QProgressBar
【Qt设计中常见控件、布局选项和属性详解】
自定义控件之------QProgressBar的自定义
堆栈窗体QStackedWidget类
PyQt4自定义控件----指示灯控件
Pyqt5系列(二)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服