一杯清酒邀明月
天下本无事,庸人扰之而烦耳。
posts - 3121,comments - 209,views - 578万

问题描述: 在主窗口中初始化进度对话框 通过指针传递将进度对话框传递给各个算法类中已便在需要时候开启进度对话框执行任务。 本人将Qt版本升级为5.7.1后 进度对话框会在初始化时候 就会自动弹出一次。原因是QProgressDialog在初始化函数init()中就将计时器forcetimer开启 所以才会导致我们在初始化程序时候 进度对话框就会跳出来

复制代码
 1 void QProgressDialogPrivate::init(const QString &labelText, const QString &cancelText,
 2                                   int min, int max)
 3 {
 4     Q_Q(QProgressDialog);
 5     label = new QLabel(labelText, q);
 6     bar = new QProgressBar(q);
 7     bar->setRange(min, max);
 8     int align = q->style()->styleHint(QStyle::SH_ProgressDialog_TextLabelAlignment, 0, q);
 9     label->setAlignment(Qt::Alignment(align));
10     autoClose = true;
11     autoReset = true;
12     forceHide = false;
13     QObject::connect(q, SIGNAL(canceled()), q, SLOT(cancel()));
14     forceTimer = new QTimer(q);
15     QObject::connect(forceTimer, SIGNAL(timeout()), q, SLOT(forceShow()));//定时器信号槽连接
16     if (useDefaultCancelText) {
17         retranslateStrings();
18     } else {
19         q->setCancelButtonText(cancelText);
20     }
21     starttime.start();
22     forceTimer->start(showTime);//开启定时器
23 }
复制代码

解决办法:
浏览源码 发现在reset()函数中有计时器的stop函数被调用

复制代码
 1 void QProgressDialog::reset()
 2 {
 3     Q_D(QProgressDialog);
 4 #ifndef QT_NO_CURSOR
 5     if (value() >= 0) {
 6         if (parentWidget())
 7             parentWidget()->setCursor(d->parentCursor);
 8     }
 9 #endif
10     if (d->autoClose || d->forceHide)
11         hide();
12     d->bar->reset();
13     d->cancellation_flag = false;
14     d->shown_once = false;
15     d->setValue_called = false;
16     d->forceTimer->stop();//停止定时器
17 }
复制代码

所以我们在new完进度对话框后 在调用一下reset函数即可

1 QProgressDialog *m_progressDlg = new QProgressDialog(this);
2 m_progressDlg->reset();

 

posted on   一杯清酒邀明月  阅读(408)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
历史上的今天:
2021-04-28 Qt QSS教程 QSpinBox
2021-04-28 Qt QSS教程 QLineEdit
2021-04-28 Qt QSlider qss(round handle) 圆形滑块
2021-04-28 Qt QSS之QSlider滑动条美化
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示