进度条-模态和非模态
- progressdlg.h
- progressdlg.cpp
- main.cpp
- 运行图
-
progressdlg.h
#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_OBJECTpublic:progressDlg(QWidget *parent = nullptr);~progressDlg();
private slots:void StartProgress();
private:QLabel* FileNum;QLineEdit* FileNumLineEdit;QLabel* ProgressType;QComboBox* ComboBox;QProgressBar* ProgressBar;QPushButton* StartBtn;QGridLayout* MainLayout;
};
#endif
progressdlg.cpp
#include "progressdlg.h"
#include <QProgressDialog>
#include <QFont>
progressDlg::progressDlg(QWidget *parent): QDialog(parent)
{QFont font("ZYsong18030",12);setFont(font);setWindowTitle(tr("Progress"));FileNum = new QLabel(tr("文件数目"));FileNumLineEdit = new QLineEdit(tr("100000"));ProgressType = new QLabel("显示类型:");ComboBox = new QComboBox;ComboBox->addItem(tr("progressbar"));ComboBox->addItem(tr("progressDialog"));ProgressBar = new QProgressBar;StartBtn = new QPushButton(tr("开始"));MainLayout = new QGridLayout(this);MainLayout->setMargin(15);MainLayout->setSpacing(10);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);connect(StartBtn,SIGNAL(clicked()),this,SLOT(StartProgress()));}progressDlg::~progressDlg() {}void progressDlg::StartProgress()
{bool Ok;int nNum = FileNumLineEdit->text().toInt(&Ok);if(ComboBox->currentIndex() ==0){ProgressBar->setRange(0,nNum);nNum++;for(int i=0;i<nNum;i++){ProgressBar->setValue(i);}}else if(ComboBox->currentIndex() == 1){QProgressDialog* ProgressDialog = new QProgressDialog(this);QFont font("ZYSong18030",12);ProgressDialog->setFont(font);ProgressDialog->setWindowModality(Qt::WindowModal);ProgressDialog->setMinimumDuration(5);ProgressDialog->setWindowTitle(tr("please wait"));ProgressDialog->setLabelText(tr("Copy....."));ProgressDialog->setCancelButtonText(tr("cancel"));ProgressDialog->setRange(0,nNum);nNum++;for(int i =0;i<nNum;i++){ProgressDialog->setValue(i);if(ProgressDialog->wasCanceled()){return;}}}}
main.cpp
#include "progressdlg.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);progressDlg w;w.show();return a.exec();
}
运行图
模态
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1287f75a14ba4dc991332accd8655b41.png)
非模态
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d3b5e5e0cf8c41149a454680a553a623.png)