在 QML 中导入 JavaScript 资源

JavaScript 资源可能由 QML 文档和其他 JavaScript 资源导入。JavaScript 资源可以通过相对或绝对 URL 导入。在相对 URL 的情况下,该位置相对于包含导入的 QML 文档或 JavaScript 资源的位置进行解析。 如果脚本文件不可访问,则会发生错误。 如果需要从网络资源中获取 JavaScript,则组件的状态将设置为“Loading”,直到脚本下载完毕。

JavaScript 资源还可以导入 QML 模块和其他 JavaScript 资源。 JavaScript 资源中的 import 语句的语法与 QML 文档中的 import 语句略有不同。

在 QML 文档导入 JavaScript 资源

import "ResourceURL" as Qualifier

导入的 JavaScript 资源始终使用“as”关键字进行限定。 JavaScript 资源的限定符必须以大写字母开头,并且必须是唯一的,因此限定符和 JavaScript 文件之间始终存在一对一的映射关系。 (这也意味着限定符不能与内置 JavaScript 对象(如 Date 和 Math)命名相同。

通过“Qualifier.functionName(params)”语法,导入的 JavaScript 文件中定义的函数可用于导入 QML 文档中定义的对象。

在一个 JavaScript 资源导另入一个 JavaScript 资源

import * as MathFunctions from "factorial.mjs";

用于导入 ECMAScript 模块的标准 ECMAScript 语法,并且只能在由 mjs 文件扩展名表示的 ECMAScript 模块内工作。

.import "filename.js" as Qualifier

是 QML 引擎提供的 JavaScript 扩展。作为被 ECMAScript 标准取代的扩展,不鼓励使用它。

// factorial.mjs
export function factorial(a) 
{
    a = parseInt(a);
    if (a <= 0)
        return 1;
    else
        return a * factorial(a - 1);
}
// script.mjs
import { factorial } from "factorial.mjs"
export { factorial }

export function showCalculations(value) 
{
    console.log(
        "Call factorial() from script.js:",
        factorial(value));
}
import QtQuick 2.0
import "script.mjs" as MyScript

Item 
{
    width: 100; height: 100

    MouseArea 
    {
        anchors.fill: parent
        onClicked: 
        {
            MyScript.showCalculations(10)
            console.log("Call factorial() from QML:",
                MyScript.factorial(10))
        }
    }
}	

在 JavaScript 资源导入 QML 模块

.import TypeNamespace MajorVersion.MinorVersion as Qualifier

例如:

.import Qt.test 1.0 as JsQtTest

var importedEnumValue = JsQtTest.MyQmlObject.EnumValue3
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值