Qt学习——进度条QProgressBar/QProgressDialog类

两种进度条显示:

QProgressBar和QProgressDialog

下面例子展示两种进度条:

     

代码:

头文件dialog.h中:

  1. #include <QtGui/QDialog>  
  2. #include <QLabel>  
  3. #include <QLineEdit>  
  4. #include <QProgressBar>  
  5. #include <QComboBox>  
  6. #include <QPushButton>  
  7. #include <QGridLayout>  
  8. class Dialog : public QDialog  
  9. {  
  10.     Q_OBJECT  
  11.   
  12. public:  
  13.     Dialog(QWidget *parent = 0);  
  14.     ~Dialog();  
  15. private slots:  
  16.     void startProgress();  
  17. private:  
  18.     QLabel *FileNum;  
  19.     QLineEdit *FileNumLineEdit;  
  20.     QLabel *ProgressType;  
  21.     QComboBox *comboBox;  
  22.     QProgressBar *progressBar;  
  23.     QPushButton *startBtn;  
  24.     QGridLayout *mainLayout;  
  25. };  

源文件:
  1. #include "dialog.h"  
  2. #include <QProgressDialog>  
  3. #include <QFont>  
  4.   
  5. Dialog::Dialog(QWidget *parent)  
  6.     : QDialog(parent)  
  7. {  
  8.     setWindowTitle(tr("Progress"));  
  9.   
  10.     FileNum=new QLabel;  
  11.     FileNum->setText(tr("文件数目:"));  
  12.     FileNumLineEdit=new QLineEdit;  
  13.     FileNumLineEdit->setText(tr("10000"));  
  14.   
  15.     ProgressType=new QLabel;  
  16.     ProgressType->setText(tr("显示类型:"));  
  17.     comboBox=new QComboBox;  
  18.     comboBox->addItem(tr("progressBar"));  
  19.     comboBox->addItem(tr("progressDialog"));  
  20.   
  21.     progressBar=new QProgressBar;  
  22.   
  23.     startBtn=new QPushButton;  
  24.     startBtn->setText(tr("开始"));  
  25.   
  26.     mainLayout=new QGridLayout(this);  
  27.     mainLayout->addWidget(FileNum,0,0);  
  28.     mainLayout->addWidget(FileNumLineEdit,0,1);  
  29.     mainLayout->addWidget(ProgressType,1,0);  
  30.     mainLayout->addWidget(comboBox,1,1);  
  31.     mainLayout->addWidget(progressBar,2,0,1,2);  
  32.     mainLayout->addWidget(startBtn,3,1);  
  33.     mainLayout->setMargin(15);  
  34.     mainLayout->setSpacing(10);  
  35.   
  36.     connect(startBtn,SIGNAL(clicked()),this,SLOT(startProgress()))  
  37. }  
  1. void Dialog::startProgress()  
  2. {  
  3.     bool ok;  
  4.     int num=FileNumLineEdit->text().toInt(&ok);  
  5.     if(!ok)  
  6.         return;  
  7.     if(comboBox->currentIndex()==0)  
  8.     {  
  9.         progressBar->setRange(0,num);  
  10.         for(int i=1;i<=num;i++)  
  11.         {  
  12.             progressBar->setValue(i);  
  13.         }  
  14.     }  
  15.     else if(comboBox->currentIndex()==1)  
  16.     {  
  17.         QProgressDialog *progressDlg=new QProgressDialog(this);  
  18.         QFont font("ZYSong18030",12);  
  19.         progressDlg->setFont(font);  
  20.         progressDlg->setWindowModality(Qt::WindowModal);  
  21.         progressDlg->setMinimumDuration(5);  
  22.         progressDlg->setWindowTitle(tr("please wait"));  
  23.         progressDlg->setLabelText(tr("正在复制......      "));  
  24.         progressDlg->setCancelButtonText(tr("取消"));  
  25.         progressDlg->setRange(0,num);  
  26.         for(int i=1;i<=num;i++)  
  27.         {  
  28.             progressDlg->setValue(i);  
  29.             if(progressDlg->wasCanceled())  
  30.                 return;  
  31.         }  
  32.     }  
  33. }  


main函数添加显示中文的代码:

  1. #include <QtGui/QApplication>  
  2. #include "dialog.h"  
  3. #include <QTextCodec>  
  4. int main(int argc, char *argv[])  
  5. {  
  6.     QApplication a(argc, argv);  
  7.     QTextCodec::setCodecForTr(QTextCodec::codecForLocale());  
  8.     Dialog w;  
  9.     w.show();  
  10.   
  11.     return a.exec();  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值