Доступ к свойствам динамически создаваемых объектов в QML - PullRequest
0 голосов
/ 21 января 2019

В моем QML GUI объекты создаются во время выполнения с помощью JavaScript.Как я могу получить доступ к свойствам этих динамически создаваемых объектов.В руководстве по QML нет информации об этом (http://doc.qt.io/archives/qt-4.8/qdeclarativedynamicobjects.html)

Мой идентификатор traget для изменения свойств после создания и сохранения их в Qt.labs.settings, поэтому моя программа сохраняет созданные объекты и может создавать эти объектыснова при запуске.

Создание объекта с помощью CreateSquareGaugeScript.createRect () работает, но я не могу найти способ получить доступ к его свойствам после этого.

Как и просил мой короткий простой пример.

main.cpp:

    import QtQuick 2.9
    import QtQuick.Window 2.2
    import QtQuick.Controls 2.0
    import "qrc:/script.js" as MyScript

    Window {
        id: mainWindow
        visible: true
        width: 640
        height: 480
        title: qsTr("Hello World")

        Button {
            id: button
            x: 540
            y: 0
            text: qsTr("Button")
            onClicked: MyScript.createRect()
        }

    }

main.qml

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.0
import "qrc:/script.js" as MyScript

Window {
    id: mainWindow
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Button {
        id: button
        x: 540
        y: 0
        text: qsTr("Button")
        onClicked: MyScript.createRect()
    }

}

Получаемый объект создан:

import QtQuick 2.0

Item {
    width: 50
    height: 50
    Drag.active: true

    MouseArea {
        id: touchArea
        anchors.fill: parent

        drag.target: parent
    }

    Rectangle {
        id: rectangle
        x: 0
        y: 0
        width: 50
        height: 50
        color: "#ad0000"
    }

}

И скрипт:

var component;
var gauge;

function createRect() {
    component = Qt.createComponent("rect.qml");
    if (component.status === Component.Ready){
        finishCreation();
    }
    else {
        component.statusChanged.connect(finishCreation);
        console.log("component not ready!");
    }
}

function finishCreation() {
    if (component.status === Component.Ready) {
        gauge = component.createObject(mainWindow);
        if (gauge === null) {
            // Error Handling
            console.log("Error creating object");
        }

    } else if (component.status === Component.Error) {
        // Error Handling
        console.log("Error loading component:", component.errorString());
    }
}

Объекты создаются так частокак пользователь хочет. Как я могу получить доступ к свойствам из созданных объектов из QML и сохранить их впоследствии в настройках, чтобы я мог воссоздать объекты после запуска программы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...