В принципе, у меня есть что-то вроде:
Main.qml:
ApplicationWindow{
width: 500
height: 500
Page{
id: page0
DataPage{
id: datapage0
}
}
}
DataPage.qml:
Page{
id: displayPage
DataDisplay{
id: dataShow
}
}
DataDisplay.qml:
Label{
text: "data: "
}
TextArea{
id: dataArea
text: ""
}
Я удалил материал, который мне кажется неуместным (например, якоря, высота, ширина и т. Д.). Теперь в main.qml у меня есть сигнал от бэкэнда c ++:
Connections{
target: modb
onPostData: {
page0.datapage0.dataShow.dataArea.text = string;
}
И я получаю следующую ошибку:
Ошибка типа: невозможно прочитать свойство 'dataArea' из неопределенного
Итак, я хотел спросить: как мне подключить этот сигнал к дочернему объекту, который определен в DataDisplay.qml? Я могу получить информацию в main.qml с помощью сигналов, но, похоже, не могу разыменовать дочерние объекты
Edit:
main.cpp:
QQmlContext* ctx0 = engine.rootContext();
ctx0->setContextProperty("ark", &ark);
QQmlContext* ctx1 = engine.rootContext();
ctx1->setContextProperty("comm", ark.comm);
QQmlContext* ctx2 = engine.rootContext();
ctx2->setContextProperty("modb", ark.modb);
- это то, как я устанавливаю контекст (из 3 классов, как вы можете видеть). Я могу получать сигналы от любого из трех в main.qml, а также вызывать слоты в любом из трех в main.qml; Я еще не пытался вызывать слоты из классов c ++ в других файлах qml, но я предполагаю, что это будет работать, потому что я могу получить доступ к свойствам родителя из дочернего элемента