在导入JavaScript时如何在QML中使用绝对路径

How to use absolute paths in QML when importing JavaScript?

本文关键字:路径 QML 导入 JavaScript      更新时间:2023-09-26

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

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

但是由于我不能将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文件定义为qmldir文件的一部分:

<ResourceIdentifier> <InitialVersion> <File>

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

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

MyScript .js

所以,如果你已经有一个现有的qmldir,你可以添加以下行:
MarketHelper 1.0 MarketHelper.js

那么,你可以这样使用它:

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

Qt Quick Controls为日历相关的功能做了这个,例如CalendarUtils.js

查看更多信息:

  • http://doc.qt.io/qt-5/qtqml-javascript-resources.html
  • http://doc.qt.io/qt-5/qtqml-modules-topic.html
  • http://doc.qt.io/qt-5/qtqml-modules-identifiedmodules.html locally-installed-identified-modules