QML WorkerScript Element
The WorkerScript element enables the use of threads in QML
source : url
Signals : onMessage
Methods : sendMessage
Detailed Description
Use WorkerScript to run operations in a new thread. This is useful for running operations in the background so that the main GUI thread is not blocked.
Messages can be passed between the new thread and the parent thread using sendMessage() and the onMessage() handler.
WorkerScript 用于生成新的线程,并通过消息进行通信。
qml文件中声明 WorkerScript { id: worker; source: "dataloader.js" } id和js文件路径。这样qml中就可以通过worker.sendMessage(msg);发送消息(msg是qml中定义的一var变量),js中总是这样定义WorkerScript.onMessage = function(msg)函数,其中msg可以含有worker msg中的多个变量或属性。同样js中也可以通过WorkerScript.sendMessage({src:src,data:jresult});向qml发送消息,其中qml中onMessage负责接收。
另外注意:
WorkerScript线程内没有全局变量,因此下面这样用法会在msg.model.append(string );造成线程的崩溃
var string = "Time:";
WorkerScript.onMessage = function(fmUrl) {
if (msg.action == 'appendCurrentTime') {
var data = {'time': new Date().toTimeString()};
msg.model.append(string );
msg.model.append(data);
msg.model.sync(); // updates the changes to the list
}
}
QML WorkerScript详解
本文详细介绍了QML中的WorkerScript元素及其使用方法。通过WorkerScript可以在QML中创建新的线程,实现后台操作,避免阻塞主线程。文章还讲解了如何通过sendMessage和onMessage在主线程与WorkerScript线程间传递消息。
551

被折叠的 条评论
为什么被折叠?



