我有一个简单的循环,我正在执行不确定长度的操作。我设置了一个 QProgressDialogrange(0,0)
来触发其不确定的“忙碌”模式;在我的平台上,这通常会产生一个进度条,其手柄来回弹跳。即使精简到以下内容,对话框也会出现,响应“取消”按钮,但句柄在栏的末端被冻结在适当的位置并且不会循环。
QProgressDialog* progressDialog =
new QProgressDialog("My Progress", "Cancel",
0, 0, this);
progressDialog->setAttribute(Qt::WA_DeleteOnClose, true);
progressDialog->setModal(true);
progressDialog->setMinimumDuration(0);
progressDialog->show();
progressDialog->setValue(0);
while (!done)
{
QThread::msleep(200);
QCoreApplication::processEvents();
}
显然,循环内部实际上发生了更多事情,但无论有没有内容,它的行为都是一样的;注释掉其他所有内容后剩下的内容与描述的一样。
为什么我的进度手柄没有来回弹跳?