Qml中的WorkerScript

来源:互联网 发布:mysql 导出一张表 编辑:程序博客网 时间:2024/04/27 22:04

 

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

    }

}