我有一个应用程序,耗费大量时间运行算法。当过滤器运行时,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);
但是,这样对话框显示出来但它全部是黑色的(它没有画出来),锄头我可以解决这个问题吗?
答案 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