Могу ли я использовать Qt.createComponent() в WorkerScript?

#javascript #qt #qml

#javascript #qt #qml

Вопрос:

Я новичок в приложении Qt quick. (QML)

Я хочу создать динамическую таблицу изображений (как в примере Samegame), но она использует поток для создания в реальном времени с помощью workerScript.

Как с помощью WorkerScript с помощью функции Qt можно передавать между новым потоком и родительским потоком? или можно импортировать Qt func в javascript?

пример

//main.qml импорт QtQuick 1.0

 Rectangle {
    width: 800; height: 600

    WorkerScript {
        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.0

Image {
    id: img
    source: "./img.jpg"; clip: true
}
  

Спасибо.

Ответ №1:

Компоненты не могут быть созданы в потоке. Если проблема заключается только в стоимости загрузки изображения, вы можете загружать их в фоновом режиме, установив значение asynchronous: true