#qt #qml
#qt #qml
Вопрос:
Я хочу поставить условие, если условие истинно, а затем показать изображения. Но когда я запускаю этот код, я получаю сообщение об ошибке. Это показывает, что изображение не определено, вот мой пример кода
Row{
spacing:5
Component.onCompleted:{
if( my condition is true ==true)
{
image.source="image_path"
}
}
Repeater{
model: 4
Image {
id: image
Layout.alignment: Qt.AlignHCenter
fillMode: Image.PreserveAspectFit
}
}
}
Комментарии:
1.
Image
Находится внутри ретранслятора, который в основном представляет собой другую область действия, поэтому из основного qmlimage
ничего не известно. Более того, к какому из 4image
вы хотели бы обратиться? Если вы покажете немного больше о своем состоянии, может быть написан подходящий ответ2. предположим, у меня есть условие, например, если мой пароль == ‘y’, то я должен показать изображения. если я использую одно изображение, то оно работает нормально, но внутри ретранслятора оно не работает
Ответ №1:
Ссылка на идентификатор внутри ретранслятора не работает, так как ретранслятор немного нарушает область видимости.
Но если вы измените логику, это сработает: вы можете привязать source
свойство внутри делегата к новому свойству основного элемента управления (которое я назвал control
здесь).:
Row {
id: control
spacing:5
property bool show : false
Repeater{
model: 4
Image {
id: image
Layout.alignment: Qt.AlignHCenter
fillMode: Image.PreserveAspectFit
source: control.show ? "image_path" : ""
}
}
}