Как загрузить один и тот же файл QML и передать им разные свойства - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть один файл index.qml, который состоит из двух прямоугольников, которые заполняют экран в пропорциях ~ 3: 1.В обоих из них я загружаю один и тот же файл window.qml.Что мне нужно, это назначить разные значения для свойства ORIENT, чтобы window.qml вел себя немного иначе.

Посмотрите на пример ниже.Этот ORINET просто показывает, чего я хотел бы достичь ...

index.qml

Rectangle {
    id: rootA
    anchors.left: parent.left
    anchors.top: parent.top
    width: parent.width * 0.65

    // set some property or function so it will be seen in loaded window.qml
    // sth like:
    property ORINET: "horizontal"

    Loader {
        anchors.left: parent.left; anchors.top: parent.top;
        anchors.right: parent.right; anchors.bottom: parent.bottom
        source: "window.qml"
    }
}

Rectangle {
    id: rootB
    anchors.right: parent.right
    anchors.top: parent.top
    width: parent.width * 0.35

    // set some property or function so it will be seen in loaded window.qml
    // sth like:
    property ORINET: "vertical"

    Loader {
        anchors.left: parent.left; anchors.top: parent.top;
        anchors.right: parent.right; anchors.bottom: parent.bottom
        source: "window.qml"
    }
}

window.qml

Rectangle {
    id: windowBox
    state [
        ...
    ]
    ...
    Component.onCompleted: {
        windowBox.state = ORINET
    }
}

1 Ответ

1 голос
/ 17 апреля 2019

Согласно этой документации вы можете присвоить Loader свойство, которое будет доступно и для загруженного элемента:

Loader {
    anchors.fill: parent
    property int ORINET: "vertical
    source: "window.qml"
}

window.qml:

Rectangle {

    states: [
        ...
    ]
    state: ORINET
}

Обратите внимание, что в QtCreator state: ORINET может выглядеть курсивом и синим цветом, как если бы его не было, но это всего лишь редактор

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