Qt trolls сказали себе, что Component.onCompleted не является предпочтительным способом делать большинство вещей, но хак должен был реализоваться.
Наилучшей является использование содействующего декларативного стиля, что-то вроде этого было бы идеально:
MyItem{
property int myvalue: -1
enabled: myvalue != -1 // Use other number if neccesary
}
Это будет работать для включения интерактивных элементов, но более интересные вещи могут быть сделаны как:
MyItem{
property int myvalue: -1
onMyvalueChanged:{
enabled = true
callMyInitFunction(something)
}
}
Это будет срабатывать, когда пользователь изменит значение, затем вы можете вызывать другие функции или инициализаторы. Если вы хотите инициализировать только один раз, вы можете проверить, отключен ли он.
MyItem{
property int myvalue: -1
onMyvalueChanged:{
if (!enabled){
enabled = true
callMyInitFunction(something)
return
}
// Stuff to do of already initialized
callOtherStuff(otherThing)
}
}
Наконец, читая слова, которые вы написали «проходит определенное свойство», кажется, вы могли бы вместо того, чтобы создать яваскрипт функцию для объекта и его вызова.
MyItem{
property int _myprop: 0
function launch(param1, param2, param3){
_myprop = param3
// do stuff
}
}
Тогда вы могли бы назвать его, запустив его, а не создавать его, это может работать для многоразового диалога, зависит от вашего использования.
Конечно, есть несколько способов сделать что-то в зависимости от того, что вам нужно.
Путь 'Qt' предназначен для того, чтобы компонент не отображал и не выводил предупреждение с помощью' qWarning() 'или выводил предупреждение внутри самого компонента. – user1095108