c++ - QProgressDialog 在暂停期间不绘制

标签 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 声明,也会发生同样的事情。我怎样才能让它在每次循环等待用户输入的同时显示所有小部件,为什么它不在上面的代码中这样做?

最佳答案

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

你需要:

关于c++ - QProgressDialog 在暂停期间不绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15558282/

相关文章:

c++ - 在控制台应用程序中工作的计时器

linux - 我想为 Linux 内核做贡献

c++ - 如果满足条件,如何退出 Qt 脚本?

C++ 测试 - 符号位 1 是否总是表示负数?

java - 从项目名称查找 api 中查找项目

c++ - 我们如何有效地压缩 DNA 串

linux - 如何在linux shell脚本输出中缩短文件路径

linux - 如何在 Linux 中创建别名?

c++ - 在 Qt 框架中控制多个 UI 文件

c++ - Qt C++ : removing next-to-last item from QListWidget makes program crash