#qt #function #variables #block #qml
#qt #функция #переменные #блок #qml
Вопрос:
В моем приложении Qt quick я использую c для генерации числа от 1 до 6, которое затем отправляется с сигналом в функцию QML. У меня есть шесть пользовательских Block
объектов или элементов (я не уверен, как вы их называете). Блоки называются block1
— 6
. Я хочу, чтобы функция имела что-то вроде block"i".visible = true
, но я не уверен точно, как это сделать. Если бы кто-нибудь мог, пожалуйста, помочь, я был бы очень признателен.
Ответ №1:
Вот способ, которым вы можете избежать необходимости вручную создавать блоки в javascript:
Предполагая, что все блоки являются дочерними элементами одного и того же родительского элемента, вы можете получить к ним доступ как parentsId.children[0]
через parentsId.children[5]
(или parentsId.children[n]
через parentsId.children[n 5]
, если у родительского элемента есть n
дочерние элементы, которые идут перед блоками).
Итак, что-то вроде этого сработало бы:
Rectangle {
// ...
Item {
id: blocks
Block {
id: block1
// ...
}
// ...
Block {
id: block6
// ...
}
}
// ...
function makeBlockVisible(i) {
// subtracting 1 from i because you said i is a number between 1 and 6
// and we need an index between 0 and 5
blocks.children[i-1].visible = true;
}
}
Ответ №2:
вместо объявления 6 отдельных блоков, объявите массив шестого размера, и вы можете поступить следующим образом block[i].visible = true
.
Комментарии:
1. Как мне объявить массив из 6 блоков в qml?
2. var block = []; Это должно быть сделано в стиле Javascript либо как встроенный, либо во внешнем файле Javascript. Теперь, когда вы хотите создать «блок» (визуальный элемент QML), вам нужно назначить его вот так, динамическим способом, block[0] = Qt.createComponent(«Block.qml»);