Компонент не готов Невозможно присвоить объект свойству

У меня есть класс C ++, унаследованный от QObject с именем LoginManager (который я зарегистрировал с qmlRegisterTypes) в main.qml файле

LoginManager{
    id: loginManager
}

теперь я хочу добавить LoginPage.qml файл в StackView

sv.push("/pages/LoginPage.qml",{lManager:loginManager});

LoginPage

Page {
    id: root
    property LoginManager lManager

    Connections{
        target: lManager

        onMessageChanged: {
        }
        onLoginSuccessed: {
        }
    }
}

но у меня возникает ошибка при нажатии кнопки, чтобы добавить LoginPage.qml в StackView

QmlComponent: Компонент не готов qrc: /main.qml: 395: 5: QML StackView: push: qrc: /pages/LoginPage.qml: 16 Невозможно назначить объект свойству

Я проделал ту же работу на других страницах, но я не знаю, почему я получил ошибку именно здесь?

Изменить

когда я прокомментирую Connections, ошибка уйдет!


person mohsen    schedule 23.04.2018    source источник
comment
LoginManager - это QQuickItem или QObject?   -  person eyllanesc    schedule 23.04.2018
comment
@eyllanesc Это класс C ++, унаследованный от QObject   -  person mohsen    schedule 23.04.2018
comment
push требует Item, который в C ++ эквивалентен QQuickItem, если LoginManager уникален, я бы рекомендовал создать его на C ++ и использовать setContextProperty () для экспорта в QML, и вы можете получить доступ к этому объекту в любой части вашего приложения. .   -  person eyllanesc    schedule 23.04.2018


Ответы (1)


Вы использовали абсолютный URL, чтобы указать на компонент страницы входа. Попробуйте сделать его относительным:

sv.push("./pages/LoginPage.qml",{lManager:loginManager});

Это должно делать свое дело.

person Martin Höher    schedule 23.04.2018
comment
Хм ... это странно. Я воспроизвел вашу проблему локально (в чистом QML), и именно использование абсолютного пути привело к печати сообщения Component is not ready. Возможно, вы могли бы попробовать изменить свойство с property LoginManager lManager на property var lManager; иногда у меня тоже были проблемы с типизированными свойствами в прошлом, но я не могу точно сказать, решит ли это вашу проблему ... - person Martin Höher; 26.04.2018