как я могу перенести метод Component.onCompleted: {} из ui.qml в .qml? - PullRequest
1 голос
/ 18 июня 2019

Я разрабатываю проект, разделяя файлы ui.qml и .qml. Итак, я записываю функциональные коды (коды JavaScript) в файл .qml и пишу коды дизайна в файле ui.qml. Однако у меня есть проблема с использованием функциональности Component.onComplete в файле .qml.

например:

MapDisplayForm.ui.qml

Item{
   id:item1

   property alias map1

   Map{
       id: map1
       Component.OnCompleted : {
          //this is the function that i should write in Map.qml
       }
   }

}

MapDisplay.qml

MapDisplayForm{


   //it does not accept map1.oncompleted here


}

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

Файлы пользовательского интерфейса предназначены для использования ТОЛЬКО с конструктором (что не очень хорошо работает с императивным JS).Решения могут быть следующими:

  • Удалите .ui или используйте общие файлы .qml
  • Используйте свойство для обработки события onCompleted и используйте это свойство в своем файле qml, чтобы делать то, что выхочу, как в следующем примере.

MapDisplayForm.ui.qml

Item {
   id:item1
   property bool propertyOnCompleted: false

   Map {
       id: map1
       Component.onCompleted: propertyOnCompleted = true
}

MapDisplay.qml

MapDisplayForm {
        onPropertyOnCompletedChanged: {
        console.log("Map1 Completed")
    }
}
0 голосов
/ 18 июня 2019

Вы можете сделать что-то вроде следующего:

Item {
   id:item1
   signal mapCompleted() // <-- custom signal
   property alias mapDisplay

   Map {
       id: map1
       Component.OnCompleted : {
          item1.mapCompleted(); // <-- emit custom signal
       }
   }
}

и так:

MapForm {
    onMapCompleted: { // <-- handle custom signal
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...