两种进度条显示:
QProgressBar和QProgressDialog
下面例子展示两种进度条:
代码:
头文件dialog.h中:
- #include <QtGui/QDialog>
- #include <QLabel>
- #include <QLineEdit>
- #include <QProgressBar>
- #include <QComboBox>
- #include <QPushButton>
- #include <QGridLayout>
- class Dialog : public QDialog
- {
- Q_OBJECT
- public:
- Dialog(QWidget *parent = 0);
- ~Dialog();
- private slots:
- void startProgress();
- private:
- QLabel *FileNum;
- QLineEdit *FileNumLineEdit;
- QLabel *ProgressType;
- QComboBox *comboBox;
- QProgressBar *progressBar;
- QPushButton *startBtn;
- QGridLayout *mainLayout;
- };
源文件:
- #include "dialog.h"
- #include <QProgressDialog>
- #include <QFont>
- Dialog::Dialog(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);
- mainLayout->addWidget(FileNumLineEdit,0,1);
- mainLayout->addWidget(ProgressType,1,0);
- mainLayout->addWidget(comboBox,1,1);
- mainLayout->addWidget(progressBar,2,0,1,2);
- mainLayout->addWidget(startBtn,3,1);
- mainLayout->setMargin(15);
- mainLayout->setSpacing(10);
- connect(startBtn,SIGNAL(clicked()),this,SLOT(startProgress()))
- }
- void Dialog::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 if(comboBox->currentIndex()==1)
- {
- 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;
- }
- }
- }
main函数添加显示中文的代码:
- #include <QtGui/QApplication>
- #include "dialog.h"
- #include <QTextCodec>
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
- Dialog w;
- w.show();
- return a.exec();
- }