QML, определяющий свойство объекта - PullRequest
0 голосов
/ 21 ноября 2019

Я пытаюсь создать карту в QML, я нашел единственный способ сделать это:

    readonly property variant translate: { "Hello" : "123" }

Затем в QML я могу получить 123 с помощью:

    idOfItem.translate["Hello"]

Это работает нормально, и при этом я получаю "123", возвращаемый по желанию. Теперь я хочу определить другое свойство для замены «Hello», которое можно использовать в QML, в идеале что-то вроде:

    readonly property string strHello: "Hello"
    readonly property variant translate: { strHello : "123" }

Затем в QML:

    idOfItem.translate[idOfItem.strHello]

Это не работает, и при попытке вставить strHello в исходное определение подчеркивание чтения появляется под ":".

Можно ли это решить?

1 Ответ

0 голосов
/ 21 ноября 2019

Это больше вопрос / проблема JavaScript.

Вы можете создать объект с динамическими именами свойств, но не во время объявления / инициализации. Вы должны сделать это динамически, например ::

readonly property string strHello: "Hello"
property var translate: ({})

function populate() {
  translate[strHello] = "123";

  console.log(translate[strHello]);
}

Component.onCompleted: populate();

См., Например, следующий вопрос, но обратите внимание, что QtQuick не поддерживает ES6. Возможно ли добавить динамически именованные свойства в объект JavaScript?

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