导入 JavaScript 时如何在 QML 中使用绝对路径?
Posted
技术标签:
【中文标题】导入 JavaScript 时如何在 QML 中使用绝对路径?【英文标题】:How to use absolute paths in QML when importing JavaScript? 【发布时间】:2015-10-08 08:57:44 【问题描述】:我无法确定 QML 如何让您在导入 Component
s 和 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 模块一样被导入?
【问题讨论】:
【参考方案1】:您可以使用以下format 将JavaScript
文件定义为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
。
更多信息:
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【讨论】:
嗨,米奇。我想我希望避免为 just JavaScript 函数使用模块。我认为将 JavaScript 放在一个与实际 qml 项目完全不同的文件夹结构中并不是很好的设计。但我最终做到了。所以谢谢你。 只是把我的两分钱投入:我认为这很好。将来您可能会发现自己在其中添加其他代码。 :) 无论如何,它肯定比使用绝对路径要好(我不确定这是否可能,这就是为什么我没有在回答中解决它)。以上是关于导入 JavaScript 时如何在 QML 中使用绝对路径?的主要内容,如果未能解决你的问题,请参考以下文章