【发布时间】:2018-10-03 18:07:04
【问题描述】:
我在main.qml 文件中有一个从QObject 继承的名为LoginManager 的c++ 类(我用qmlRegisterTypes 注册了它)
LoginManager{
id: loginManager
}
现在我想将LoginPage.qml 文件添加到StackView
sv.push("/pages/LoginPage.qml",{lManager:loginManager});
登录页面
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 无法将对象分配给属性
我在其他页面上做了同样的工作,但我不知道为什么我在这里得到错误?
编辑
当我评论连接时,错误就会消失!
【问题讨论】:
-
LoginManager 是 QQuickItem 还是 QObject?
-
@eyllanesc 是继承自QObject的c++类
-
push 需要一个 Item,在 C++ 中相当于 QQuickItem,如果 LoginManager 是唯一的,我建议在 C++ 中创建它并使用 setContextProperty() 将其导出到 QML,您可以访问该对象位于应用程序的任何部分。
标签: qt qml components qtquickcontrols2 stackview