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));
            }
    });
//仅作为显示出进度条的参考

详细教程可转

爱编程的大丙

相关推荐
此刻我在家里喂猪呢1 小时前
qt之开发大恒usb3.0相机一
qt·相机开发·大恒usb3.0相机·工业相机开发
xMathematics6 小时前
计算机图形学实践:结合Qt和OpenGL实现绘制彩色三角形
开发语言·c++·qt·计算机图形学·cmake·opengl
星火撩猿9 小时前
ubantu中下载编译安装qt5.15.3
开发语言·qt
机器视觉知识推荐、就业指导12 小时前
开源QML控件:进度条滑动控件(含源码下载链接)
前端·qt·开源·qml
꧁坚持很酷꧂15 小时前
Linux Ubuntu18.04下安装Qt Craeator 5.12.9(图文详解)
linux·运维·qt
ChoSeitaku15 小时前
17.QT-Qt窗口-工具栏|状态栏|浮动窗口|设置停靠位置|设置浮动属性|设置移动属性|拉伸系数|添加控件(C++)
c++·qt·命令模式
OpenC++18 小时前
【C++QT】Buttons 按钮控件详解
c++·经验分享·qt·leetcode·microsoft
我真的不会C19 小时前
QT窗口相关控件及其属性
开发语言·qt
云小逸20 小时前
【QQMusic项目界面开发复习笔记】第二章
c++·qt
꧁坚持很酷꧂21 小时前
配置Ubuntu18.04中的Qt Creator为中文(图文详解)
开发语言·qt·ubuntu