引言
发现 在类中定义 QProgressDialog 成员变量,窗口启动后进度条会自动出现
解决
MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QProgressDialog>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_pushButton_clicked();
void on_pushButton_2_clicked();
private:
Ui::MainWindow *ui;
QProgressDialog progress_dlg;
};
#endif // MAINWINDOW_H
MainWindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
/**
* 5.7.1后
* QProgressDialog在初始化函数init()中就将计时器forcetimer开启 会导致我们在初始化程序时候 进度对话框就会跳出来
* 调用reset()可以把定时器关掉
*/
progress_dlg.reset();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
progress_dlg.setMaximum(10);
progress_dlg.setMinimum(0);
progress_dlg.setValue(0);
// progress_dlg.show();
}
void MainWindow::on_pushButton_2_clicked()
{
/*************************************************
* cancel()可以取消进度框但是无法重复加载
* 调用一下close reset 重置进度条后即可
*************************************************/
progress_dlg.cancel();
progress_dlg.close();
progress_dlg.reset();
}
参考: