Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QProgressDialog在暂停期间未绘制_C++_Linux_Qt - Fatal编程技术网

C++ QProgressDialog在暂停期间未绘制

C++ QProgressDialog在暂停期间未绘制,c++,linux,qt,C++,Linux,Qt,我有理由在循环中使用QProgressDialog,我希望该对话框弹出并等待用户输入,然后再显示该对话框。但是,第二次循环时,对话框将保持匿名,直到它开始正确更新。下面是一些示例代码: QProgressDialog progressDialog("progress", "Cancel", 0, 10000); progressDialog.setMinimumDuration(0); progressDialog.setWindowModality(Qt::Win

我有理由在循环中使用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 progressDialog(“进度”、“取消”,
0, 10000);
progressDialog.setMinimumDuration(0);
progressDialog.setWindowModal(Qt::WindowModal);
而(1){
progressDialog.show();
progressDialog.setValue(0);
qApp->processEvents();
getchar();
for(无符号整数i=0;i<10000;i++)
progressDialog.setValue(i+1);
}

第一次显示对话框中的所有小部件,但第二次显示时,什么都没有。如果在循环中移动QProgressDialog声明,也会发生同样的情况。我如何让它在每次通过循环等待用户输入时显示所有小部件,为什么不在上面的代码中显示这些小部件?

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

您需要:

  • 将工作代码(从用户读取数据并对其执行操作)移动到其他对象,并在单独的线程中运行,qt项目页面上有一个很好的示例:

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

      您需要:

      • 将工作代码(从用户读取数据并对其执行操作)移动到其他对象,并在单独的线程中运行,qt项目页面上有一个很好的示例: