Can I using Qt.createComponent() in WorkerScript function?
-
I'm new in Qt quick app. (QML)
I wanna create dynamic image table(like in Samegame example) but it using thread to make real-time create by using workerScript.
How to using WorkerScript by Qt function can be passed between the new thread and the parent thread? or can import Qt func in javascript?
example
@//main.qml
import QtQuick 1.0Rectangle {
width: 800; height: 600WorkerScript { id: myWorker source: "script.js" } Item { id: container anchors.fill: parent } Component.onCompleted: myWorker.sendMessage({ 'container':container })
}@
@//script.js
WorkerScript.onMessage = function(message) {
// error occur in this below line with TypeError: Result of expression 'Qt.createComponent' [undefined] is not a function.
var component = Qt.createComponent("Imgbox.qml");
if (component.status == Component.Ready) {
var img = component.createObject(message.container);
}
}@@//Imgbox.qml
import QtQuick 1.0Image {
id: img
source: "./img.jpg"; clip: true
}@Thanks.
-
There is no QQmlEngine in the WorkerScript thread, only a JavaScript engine. Attempting to create a component in a thread which has no QQmlEngine cannot succeed. You can create QObjects in a WorkerScript thread, but not QML items (well, you technically could create a QQuickItem, but it wouldn't be usable).
You can interact with certain QML items from within functions in a WorkerScript (e.g., ListModel items are a good example) but some magic happens behind the scenes to allow that.