Попытка заставить это работать в Qt версии 5.9
Кажется, что всякий раз, когда я создаю объект на вкладке QML , он не распознается родительским объектом (или любым из родителей родителя и т. Д.). Как заставить родительские объекты распознавать объект на вкладке? Или, если это невозможно, то каков обходной путь для вызова функции объекта во вкладке?
Я свел код к этому упрощенному примеру:
import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 1.4
Window {
Rectangle {
id: myFunctionCaller
Component.onCompleted: {
myParent.myFunction();
myChild.myFunction();
myGrandChild.myFunction();
}
}
TabView {
id: myParent
property Rectangle grandchild: myGrandChild
onGrandchildChanged: console.log("Parent recognizes GrandChild");
function myFunction() {
console.log("I'm the Parent");
}
Tab{
id: myChild
property Rectangle grandchild: myGrandChild
onGrandchildChanged: console.log("Child recognizes GrandChild");
function myFunction() {
console.log("I'm the Child");
}
Rectangle {
id: myGrandChild
function myFunction() {
console.log("I'm the GrandChild");
}
}
}
}
}
Я ожидаю этот вывод:
I'm the Parent
I'm the Child
I'm the GrandChild
Parent recognizes Grandchild
Child recognizes Grandchild
Однако я получаю такой вывод:
I'm the Parent
I'm the Child
ReferenceError: myGrandChild is not defined.
ReferenceError: myGrandChild is not defined.
ReferenceError: myGrandChild is not defined.
Ошибка возникает в следующих строках:
myGrandChild.myFunction();
onGrandchildChanged: console.log("Parent recognizes GrandChild");
onGrandchildChanged: console.log("Child recognizes GrandChild");