Я не понимаю, почему я получаю эту неопределенную ошибку в своем коде

#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 Находится внутри ретранслятора, который в основном представляет собой другую область действия, поэтому из основного qml image ничего не известно. Более того, к какому из 4 image вы хотели бы обратиться? Если вы покажете немного больше о своем состоянии, может быть написан подходящий ответ

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" : ""
        }
    }
}