Мои проекты содержат 6 qml-файлов: Main.qml открывает новый ApplicationWindow и объявляет панель инструментов. Он также инициализирует StackView с initalItem homescreen.qml. На главном экране у меня есть разные кнопки, открывающие разные qml-файлы, через stack.push («URL»). Помимо main.qml все файлы начинаются с Item {}. Я смог подключить сигналы от main.qml и home.qml. Но мне не удалось получить доступ к объектам, которые глубже в стеке. Я не знаю, могу ли я изменить свой код .cpp для доступа к другим объектам, или если я должен изменить инициализацию StackView, чтобы все файлы загружались и были доступны в начале. Вот код, сломалась до самых основ:У меня есть несколько qml-файлов, которые выталкиваются через StackView. Как подключить их к C++
main.qml
ApplicationWindow { Rectangle{ id: homeButton objectName: "homeButton" signal qmlSignal(string msg) MouseArea { onClicked: {stack.push({item:"qrc:/home.qml}); homeButton.qmlSignal("Hello")} } } StackView{ initalItem: "qrc:/home.qml" }
}
secondframe.qml // randomw QML файл, который приходит после дома экран
Item { Rectangle{ id: test objectName: "test" signal qmlSignal(string msg) MouseArea { onClicked: {stack.push({item:"qrc:/thirdframe.qml}); test.qmlSignal("Hello")} } } }
main.cpp
QApplication app (argc, argv); QQmlEngine enigne; QQmlComponent component(&engine, QUrl(QStringLiteral("qrl:/main.qml"))); QObject *object = componet.create(); QQmlComponent newcomponent(&engine, QUrl(QStringLiteral("qrl:/secondframe.qml"))); QObject *newobject = newcomponet.create(); MyClass myClass QObject *home = object->findChild<QObject*>("homeButton"); // I'm able to connect to every Object in the main.qml or home.qml QObject::connect(home,SIGNAL(qmlSignal(Qstring)), &myClass, SLOT(cppSlot(QString))); QObject *test = newobject->findChild<QObject*>("test"); // Can't connect to the Objects in secondframe.qml QObject::connect(test,SIGNAL(qmlSignal(Qstring)), &myClass, SLOT(cppSlot(QString)));
Как у secondframe.qml есть доступ к объекту стека? У меня есть приложение с Stackview, которое n страниц. Мне нужно перейти с одной страницы на другую. Как мне это сделать? –