【问题标题】:How to use absolute paths in QML when importing JavaScript?导入 JavaScript 时如何在 QML 中使用绝对路径?
【发布时间】:2015-10-08 08:57:44
【问题描述】:

我无法确定 QML 如何让您在导入 Components 和 JavaScript 文件时使用绝对路径。

据我所知,导入的唯一方法是使用相对路径或将Components 作为模块导入。

但由于我不能将 JavaScript 函数作为模块(或者我可以吗?),我只能做相对路径。

所以我的大多数组件中的标题都填充了这样的代码:

import QtQuick 2.5
import QtQuick.Layouts 1.2
import MyCompany.Gui 1.0

import "markets"
import "../../../../../../javascript/markets/MarketHelper.js" as MarketHelper

我怎样才能让 JavaScript 像 QML 模块一样被导入?

【问题讨论】:

    标签: javascript qt qml qtquick2


    【解决方案1】:

    您可以使用以下formatJavaScript 文件定义为qmldir 文件的一部分:

    <ResourceIdentifier> <InitialVersion> <File>
    

    声明一个可供模块使用的 JavaScript 文件。资源将通过具有指定版本号的指定标识符提供。

    qmldir 文件中可能存在零个或多个 JavaScript 资源声明,但是每个 JavaScript 资源在模块的任何特定版本中都必须具有唯一标识符。 示例:

    MyScript 1.0 MyScript.js

    所以,如果您已经有一个现有的qmldir,您可以在其中添加以下行:

    MarketHelper 1.0 MarketHelper.js
    

    然后,你可以这样使用它:

    import Market 1.0
    
    // ...    
    
        Text {
            text: MarketHelper.priceOfOil()
        }
    
    // ...
    

    Qt Quick Controls does this for calendar-related functionality,例如CalendarUtils.js

    更多信息:

    【讨论】:

    • 嗨,米奇。我想我希望避免为 just JavaScript 函数使用模块。我认为将 JavaScript 放在一个与实际 qml 项目完全不同的文件夹结构中并不是很好的设计。但我最终做到了。所以谢谢你。
    • 只是把我的两分钱投入:我认为这很好。将来您可能会发现自己在其中添加其他代码。 :) 无论如何,它肯定比使用绝对路径要好(我不确定这是否可能,这就是为什么我没有在回答中解决它)。
    猜你喜欢
    • 2022-10-24
    • 2022-06-16
    • 1970-01-01
    • 2018-12-12
    • 2017-11-30
    • 2016-06-26
    • 1970-01-01
    • 2021-01-31
    • 2022-01-01
    相关资源
    最近更新 更多