Как я могу ссылаться на элемент по идентификатору в другом файле QML?

#qt #qml

#qt #qml

Вопрос:

Итак, допустим, у меня есть следующие два файла qml:

main.qml:

     Window {
       /* ... */

       onSomething: mybutton.text = "foo"

       Foo {}
    }
 

Foo.qml:

 Item {
    /* ... */

    Button {
      id: mybutton

      /* ... */
    }
}
 

При onSomething вызове он будет генерировать ошибку времени выполнения:

 ReferenceError: mybutton is not defined
 

Как правильно ссылаться на mybutton кнопку mail.qml ? Или как еще я могу это организовать?

( ids Область действия файла ограничена?)

Ответ №1:

Вы должны создать псевдоним для своего объекта, который должен быть доступен, как показано ниже

Foo.qml

 Item {
property alias buttonText: mybutton.text
/* ... */

Button {
  id: mybutton

  /* ... */
}
 

}

затем используйте его в вашем main.qml

main.qml

 Window {
   /* ... */

   onSomething: myfoo.buttonText = "foo"

   Foo 
   {
      id: myfoo
   }
}
 

Также вы можете создать псевдоним для своего объекта Button и использовать его. Как вы догадываетесь, идентификаторы ограничены, и вы должны сделать их доступными.