QT 中 QProgressDialog 进度条窗口 备查

基础API

cpp 复制代码
//两个构造函数
QProgressDialog::QProgressDialog(
	QWidget *parent = nullptr, 
	Qt::WindowFlags f = Qt::WindowFlags());

QProgressDialog::QProgressDialog(
	const QString &labelText, 
	const QString &cancelButtonText, 
	int minimum, int maximum, 
	QWidget *parent = nullptr,
	Qt::WindowFlags f = Qt::WindowFlags());
参数:
  - labelText: 对话框中显示的提示信息
  - cancelButtonText: 取消按钮上显示的文本信息
  - minimum: 进度条最小值
  - maximum: 进度条最大值
  - parent: 当前窗口的父对象
  - f: 当前进度窗口的flag属性, 使用默认属性即可, 无需设置
*/

// 设置取消按钮显示的文本信息
[slot] void QProgressDialog::setCancelButtonText(const QString &cancelButtonText);

// 公共成员函数和槽函数
QString QProgressDialog::labelText() const;
void QProgressDialog::setLabelText(const QString &text);

// 得到进度条最小值
int QProgressDialog::minimum() const;
// 设置进度条最小值
void QProgressDialog::setMinimum(int minimum);

// 得到进度条最大值
int QProgressDialog::maximum() const;
// 设置进度条最大值
void QProgressDialog::setMaximum(int maximum);

// 设置进度条范围(最大和最小值)
[slot] void QProgressDialog::setRange(int minimum, int maximum);

// 得到进度条当前的值
int QProgressDialog::value() const;
// 设置进度条当前的值
void QProgressDialog::setValue(int progress);


bool QProgressDialog::autoReset() const;
// 当value() = maximum()时,进程对话框是否调用reset(),此属性默认为true。
void QProgressDialog::setAutoReset(bool reset);


bool QProgressDialog::autoClose() const;
// 当value() = maximum()时,进程对话框是否调用reset()并且隐藏,此属性默认为true。
void QProgressDialog::setAutoClose(bool close);

// 判断用户是否按下了取消键, 按下了返回true, 否则返回false
bool wasCanceled() const;

// 重置进度对话框。wascancelled()变为true,直到进程对话框被重置。进度对话框被隐藏。
[slot] void QProgressDialog::cancel();
// 重置进度对话框。如果autoClose()为真,进程对话框将隐藏。
[slot] void QProgressDialog::reset();   

// 当单击cancel按钮时,将发出此信号。默认情况下,它连接到cancel()槽。
[signal] void QProgressDialog::canceled();

// 设置窗口的显示状态(模态, 非模态)
void QWidget::setWindowModality(Qt::WindowModality windowModality);
参数:
	Qt::NonModal  -> 非模态
	Qt::WindowModal	-> 模态, 阻塞父窗口
	Qt::ApplicationModal -> 模态, 阻塞应用程序中的所有窗口

小案例

效果
思路
cpp 复制代码
    //创建出进度条对话框窗口对象
    QProgressDialog *progress = new QProgressDialog("正在导出...", "打开Excel导出目录", 0, 100, this);

    //初始化显示进度条窗口标题 (从QWidgeet所继承)
    progress->setWindowTitle("请稍后");
    // 当value() = maximum()时,进程对话框是否调用reset()并且隐藏,此属性默认为true。(即进度条到达%100后进度窗口是否会隐藏)
    progress->setAutoClose(false);
    // 当value() = maximum()时,进程对话框是否调用reset(),此属性默认为true。(即进度条到达%100后是否会清零)
    progress->setAutoReset(false);
    //设置对话框模态显示
    progress->setWindowModality(Qt::WindowModal);
    //显示对话框
    progress->show();

    //更新进度条
    static int value = 0;  //保存进度值

    //使用定时器改变 进度条 value
    QTimer *time = new QTimer(this);
    connect(time, &QTimer::timeout, this, [=](){
        //设置进度值
        progress->setValue(value++);
//        qDebug()<<progress->value();
        //当 value 值达到最大值 100 后,停止定时器
        if(value > progress->maximum())
        {
            time->stop();
            value = 0;
            progress->setLabelText("Excel已导出成功。");
        }
    });

    //启动进度条定时器
    time->start(1);

    connect(progress, &QProgressDialog::canceled, this, [=](){
            qDebug()<<progress->wasCanceled()<<11;
            QString filePath = QFileDialog::getOpenFileName(this,
                                                            "导出excel目录",
                                                            "C:\\Users\\18584\\Desktop\\qtcode",//默认打开目录+文件
                                                            "excel(*.xls)");//文件类型过滤
            if(filePath.isEmpty()){
//                QMessageBox::warning(this, "提示", "文件路径错误。");
                return;
            }else
            {
                //打开路径对应的文件
                QDesktopServices::openUrl(QUrl::fromLocalFile(filePath));
            }
    });
//仅作为显示出进度条的参考

详细教程可转

爱编程的大丙

相关推荐
hssfscv2 小时前
QT的学习笔记4——QMainWindow、资源文件以及主要控件的介绍
笔记·qt·学习
luoyayun3614 小时前
Qt + FFmpeg 音频工具:重采样实现
qt·ffmpeg·重采样
小短腿的代码世界1 天前
Qt Bluetooth源码深度解析:从HCI协议到跨平台API的完整架构
开发语言·qt·架构
小短腿的代码世界1 天前
Qt WebEngine多进程架构与IPC通信:从Chromium多进程到Qt信号槽融合
qt·架构·系统架构
尘中远1 天前
【Qwt 7.0 系列】快速入门与核心新特性概览 —— 更现代的 Qt 数据可视化库
qt·数据可视化·绘图·qwt·科学绘图
初阳7851 天前
【Qt】系统相关(3)——多线程
qt
初阳7851 天前
【Qt】系统相关(2)——文件
开发语言·qt
尘中远2 天前
【Qwt 7.0 系列】坐标轴与刻度系统 —— 刻度引擎、网格、图例与刻度朝内
qt·数据可视化·qcustomplot·qwt·工业软件·科学绘图
sycmancia2 天前
Qt——多线程间的互斥
开发语言·qt
尘中远2 天前
【Qwt 7.0 系列】常用图表类型实战 —— 柱状图、散点图、箱线图与直方图
qt·qwt·工业软件·科学绘图