1、用QProgressDialog实现进度显示
2、mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "qprogressdialog.h"
#include "qdebug.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
numFiles = 100;
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked(){
/*QProgressDialog progress( "Copying files...", "Abort Copy", numFiles,
this, "progress", TRUE );
for ( int i = 0; i < numFiles; i++ ) {
progress.setProgress( i );
qApp->processEvents();
if ( progress.wasCancelled() )
break;
//……复制文件
}
progress.setProgress( numFiles );*/
QProgressDialog dialog("文件复制进度", "取消", 0, 100000, this);
dialog.setWindowTitle("进度对话框");
dialog.setWindowModality(Qt::WindowModal);
dialog.show();
for(int i = 0; i < 100000; i++)//已知最大值不超过50000
{
dialog.setValue(i);
QCoreApplication::processEvents();
if(dialog.wasCanceled())
break;
}
dialog.setValue(100000);
qDebug()<< "复制结束!" <<endl;
}
3、mainwindows.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
public slots:
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
int numFiles;
};
#endif // MAINWINDOW_H
4、出现中文乱码在main.cpp中添加函数
#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QTextCodec>
int main(int argc, char *argv[])
{
/*QTextCodec *codec = QTextCodec::codecForName("GBK");//情况1
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);*/
QTextCodec *codec = QTextCodec::codecForName("UTF-8");//情况2
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
5、运行结果如下所示