QProgressDialog在暂停期间不绘图

时间:2013-03-21 21:15:48

标签: c++ linux qt

我有理由在循环中使用QProgressDialog,我希望在显示对话框之前弹出对话框并等待用户输入。但是,第二次循环时,对话框保持不露面,直到它开始正确更新为止。以下是一些示例代码:

QProgressDialog progressDialog("progress", "Cancel",
               0, 10000);
progressDialog.setMinimumDuration(0);
progressDialog.setWindowModality(Qt::WindowModal);

while(1) {

  progressDialog.show();
  progressDialog.setValue(0);

  qApp->processEvents();

  getchar();

  for(unsigned int i = 0; i < 10000; i++)
    progressDialog.setValue(i+1);
}

第一次显示对话框中的所有小部件,但第二次显示,没有任何内容。如果我在循环中移动QProgressDialog声明,会发生同样的事情。如何在每次循环时等待用户输入时显示所有小部件,为什么不在上面的代码中执行此操作?

1 个答案:

答案 0 :(得分:1)

这是因为你在GUI线程中完成了所有工作。由于getchar()在用户输入内容之前不会返回,因此GUI线程无法重新绘制小部件和窗口。

你需要: