我正在尝试覆盖QML应用程序窗口中的onClosing
事件。
窗口的qml很简单:
ApplicationWindow {
id: rootWindow
objectName: "window"
visible: true
width: 800
height: 480
property Component loginForm: LoginView {}
onClosing: {
loginForm.logout()
}
}
LoginView
视图也很简单:
Rectangle {
id: view
function logout() {
console.log("Logout called");
}
}
现在,它会返回一个错误:
TypeError: Property 'logout' of object QQmlComponent(0x9287150) is not a function
我也尝试了loginForm.view.logout()
,然后返回:
TypeError: Cannot call method 'logout' of undefined
答案 0 :(得分:2)
我认为QML遇到了麻烦,因为您的属性属于Component
类型。您正在将LoginView
(Component
的继承后代)分配给类型为Component
的属性。如果您将属性更改为LoginView
类型,则可以使用:
property LoginView loginForm : LoginView{}
如果这实际上不是您希望由主模块导出的属性,您只需在不创建属性的情况下实例化它,但仍然为其提供模块范围标识符:
LoginView{ id: loginForm }
执行其中任何一项操作都可以访问该功能。