【发布时间】:2017-03-31 20:31:59
【问题描述】:
我的任务很重。我创建了 QProgressBar 来显示该程序仍然有效,并使用 c++ std::thread 类在另一个线程中运行繁重的任务。但是 QProgressBar 不起作用,只有带有 QProgressBar 的窗口才会启动。 代码如下:
QProgressBar progress;
progress.setRange(0, 0);
progress.show();
if (keyLength == 1024)
std::thread(&RSA::generateKeys, &rsa, RSA::RSA_1024).join();
else if (keyLength == 2048)
std::thread(&RSA::generateKeys, &rsa, RSA::RSA_2048).join();
【问题讨论】:
-
还有,指示进度条更改状态的代码在哪里?为什么要将进度条设置为未确定状态,而不是设置有效的最小/最大值,并在当前值发生变化时发出信号?
-
它应该在没有最小值和最大值的情况下运行,就像这样doc.qt.io/qt-5/images/macintosh-progressbar.png
-
请详细说明如何您认为它会这样做吗?它应该如何在正确的时间内通过 0-100% 的进度条长度,而没有任何关于更新状态的信号?
-
根据documentation:如果最小值和最大值都设置为0,则条形图显示忙碌指示符而不是步数百分比。 但是,没有问题中有足够的信息来判断是否显示了 busy indicator,但是很明显,进度条不应该显示(如问题所示)。
-
@AlgirdasPreidžius screencapture.ru/uploaded/27/83/d2/2783d2Da.jpg
标签: c++ multithreading qt qprogressbar