Qt繁忙处理对话框

时间:2017-07-17 10:15:41

标签: c++ qt

我有一个应用程序,耗费大量时间运行算法。当过滤器运行时,GUI显然会阻塞,直到算法结束。

出于这个原因,我想在算法运行时显示模态对话框,显示“忙”消息。这样,GUI仍然会响应。我尝试按如下方式进行:

let arr = [{id:1, name:"Samsung", price :"$937.78", rating :4.5},
  {id:2, name:"Samsung", price :"$37.78", rating :4.5},
  {id:3, name:"Samsung", price :"$222.78", rating :4.5},
];

arr.sort((a,b) => a.price.match(/\d+\.\d+/)[0] - b.price.match(/\d+\.\d+/)[0]);

console.log(arr);

但是,这样对话框显示出来但它全部是黑色的(它没有画出来),锄头我可以解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

如果GUI必须响应,那么繁重的算法应该在非主(非GUI)线程中运行。 要做出响应,GUI必须能够访问主线程以处理事件循环中的事件。

您可以I20170717-11:39:11.027(2)? 11:39:10 - info: Hello world W20170717-11:39:11.150(2)? (STDERR) W20170717-11:39:11.151(2)? (STDERR) events.js:72 W20170717-11:39:11.152(2)? (STDERR) throw er; // Unhandled 'error' event W20170717-11:39:11.152(2)? (STDERR) ^ W20170717-11:39:11.153(2)? (STDERR) Error: ENOENT, open 'log/results.log' QFuture一起使用来实现此目的。

QtConcurrent::run用法示例:

QFuture