如何在qml中创建全局函数

Jer*_*rry 3 global function qml

我想创建一个全局函数,可以在我的其他 qml 文件中的任何地方调用。试图将一个函数放在一个矩形内,但它在下一个对象中给了我语法错误。我不想使用单例,因为语法类似于 Singleton.foobar。我只想在其他 qml 的任何地方使用 foobar。

Rectangle {
    function foobar(v) {
        return v * 2;
    }
}

ApplicationWindow { // syntax error here
}
Run Code Online (Sandbox Code Playgroud)

der*_*erM 5

在根节点 ( ApplicationWindow) 中定义函数。这将是最后一个位置,QML 将在使用C++-context 属性之前查找名称。

请参阅此处了解如何在 QML 中解析变量和函数的名称。

然而不可能修改全局对象,所以真正的全局 JS 函数是不可能的。

然而,更有效的方法是,将它始终保持在最特定的范围之一,因此引用它Identifyer.function()会更快查找。然而,图书馆的单身不是要走的路。查看此处了解 JS 库的使用。