基础API
//两个构造函数
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 -> 模态, 阻塞应用程序中的所有窗口
小案例
效果
思路
//创建出进度条对话框窗口对象
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));
}
});
//仅作为显示出进度条的参考
详细教程可转
原文地址:https://blog.csdn.net/CYS_2020/article/details/134728029
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_35566.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。