【问题标题】:calling javascript in another file in qml在 qml 的另一个文件中调用 javascript
【发布时间】:2016-11-14 17:09:55
【问题描述】:

我正在尝试覆盖 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

【问题讨论】:

    标签: qt qml qtquick2


    【解决方案1】:

    我认为 QML 有问题,因为您的属性是 Component 类型。您将LoginViewComponent 的继承后代)分配给Component 类型的属性。如果您将属性更改为LoginView 类型,它将起作用:

    property LoginView loginForm : LoginView{}
    

    如果这实际上不是您希望由主模块导出的属性,您可以简单地实例化它而不创建属性,但仍然给它一个模块范围标识符:

    LoginView{ id: loginForm }
    

    执行其中任何一项都可以让您访问该功能。

    【讨论】:

    • 啊啊啊……谢谢!是的,当然,由于转换为通用组件类型,它会丢失特定信息...
    • QML 对它有一些影响。这个教程一开始对我很有帮助:qmlbook.github.io
    • @Luca 我认为它也适用于泛型类型,即ItemQtObjectComponent 是“类”定义,而不是实例
    猜你喜欢
    • 1970-01-01
    • 2015-06-24
    • 2014-04-05
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 2014-11-15
    相关资源
    最近更新 更多