如何在 QML 上使用 JavaScript 库

2023-12-24

我在 5.12.2 上使用一些带有 QML 的 javascript 库。其中一些像 Proj4JS 一样工作。但我在使用时遇到错误地理库.js https://geographiclib.sourceforge.io/scripts/geographiclib.js具有 QML 的库。如何将 JavaScript 库导入到 QML 中?

主要.qml:

import QtQuick 2.12
import QtQuick.Window 2.12
import "geographiclib.js" as MyGeo
Window {
    visible: true
    width: 640
    height: 480
    Component.onCompleted: {
        var Geodesic = MyGeo.GeographicLib.Geodesic,
            DMS = MyGeo.GeographicLib.DMS,
            geod = Geodesic.WGS84;
        var r = geod.Inverse(23, 22, 44, 29);
        console.log("distance is: ", r.s12.toFixed(3) + " m")
    }
}

Error:

qrc:/geographiclib.js:3081: ReferenceError: window is not defined
qrc:/main.qml:9: TypeError: Cannot read property 'Geodesic' of undefined

最简单的方法是使GeographicLib全球可用:

结束时地理库.js文件、更改

window.GeographicLib = geo;

to

this.GeographicLib = geo;

然后你就可以使用:

主要.qml:

import QtQuick 2.12
import QtQuick.Window 2.12
import "geographiclib.js" as ThenItWillBeAvailableGlobally
Window {
    visible: true
    width: 640
    height: 480
    Component.onCompleted: {
        var Geodesic = GeographicLib.Geodesic,
            DMS = GeographicLib.DMS,
            geod = Geodesic.WGS84;
        var r = geod.Inverse(23, 22, 44, 29);
        console.log("distance is: ", JSON.stringify(r))
    }
}

导致:

qml: distance is:  {"lat1":23,"lat2":44,"lon1":22,"lon2":29,"a12":21.754466225665134,"s12":2416081.7576307985,"azi1":13.736139413215236,"azi2":17.669059640534535}

如果你不想改变地理库.js文件,您可以使用以下命令添加全局窗口对象:

窗口.js:

this.window = this;

然后使用:

import QtQuick 2.12
import QtQuick.Window 2.12
import "window.js" as ThenWindowWillBeAvailableGlobally
import "geographiclib.js" as ThenGeographicLibWillBeAvailableGlobally
Window {
    visible: true
    width: 640
    height: 480
    Component.onCompleted: {
        var Geodesic = GeographicLib.Geodesic,
            DMS = GeographicLib.DMS,
            geod = Geodesic.WGS84;
        var r = geod.Inverse(23, 22, 44, 29);
        console.log("distance is: ", JSON.stringify(r))
    }
}

如果您不想添加任何全局变量但您愿意编辑地理库.js文件,那么你可以将第 68 行移动到文件的顶部:

var GeographicLib = {};
/*
 * Geodesic routines from GeographicLib translated to JavaScript.  See
 * https://geographiclib.sourceforge.io/html/js/

并在文件末尾更改

  } else {
    /******** otherwise just pollute our global namespace ********/
    window.GeographicLib = geo;
  }
});

to

  } else if (typeof window === 'object') {
    /******** otherwise just pollute our global namespace ********/
    window.GeographicLib = geo;
  }
});

然后你的main.qml会工作得很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 QML 上使用 JavaScript 库 的相关文章

  • 三个JS,给纹理添加镜面反射(光泽)

    我有一个纹理应用于 Three js 中的对象 我想为其添加一些镜面反射或光泽 我看到这样的例子 new THREE MeshPhongMaterial color 0x996633 specular 0x050505 shininess
  • 如何使用多个 select2 框过滤表格?

    我正在尝试使用 和多个 select2 框的类来过滤表格 表格 HTML table class table tbody tr class kanban event Austin td td tr tr class csm event Ch
  • 如何将值发布到输入框中?

    Intro I would like to get the current time after clicking at click and POST the value into input text box Note 假设包含引导样式表
  • 有没有办法动态更改 jqGrid 的单元格值?

    这个问题可能已经被问过很多次了 但我想知道是否可以动态更改 jqgrid 的单元格值 我基本上有一个网格 它通过 JSON 字符串加载数据 在特定列的某些行上 该值可能为 null 因此 预先知道哪个行 ID 是一个问题 然后能够将 nul
  • Javascript 对象属性名称

    在 C 中 可以将对象属性的名称作为字符串值获取 名称 对象 Property gt myProperty 这可以在 Javascript Typescript 中完成吗 Object Keys 是我找到的唯一东西 但它给了我所有的键 示例
  • jQuery:查找具有特定自定义属性的元素

    我只想找到具有特定自定义属性值的元素 例如 我想找一个div其具有属性data divNumber 6 var number 6 var myDiv data divNumber number 我尝试使用http api jquery co
  • 如何在React Native的MapView中设置标记

    我想在React Native中的MapView上设置一个标记 但是通过官方文档找不到任何信息MapView https facebook github io react native docs mapview html content 如
  • 判断字符串是否包含有效的javascript代码

    我正在寻找一个C 返回的函数true如果字符串包含有效的 JavaScript 语法 例如 IsValidJavascript alert hello 会回来true but IsValidJavascript alertXXhelloZ
  • 检测 Webkit/Chrome 中 HTML5 数字控件更改的事件?

    HTML5 为我们提供了一些新的输入元素 例如
  • 如何将一个数组中的所有项目复制到另一个数组中?

    如何将数组的每个元素 其中元素是对象 复制到另一个数组中 以便它们完全独立 我不想更改一个数组中的元素来影响另一个数组 这里的关键是 数组中的条目是对象 并且 您不希望对一个数组中的对象的修改显示在另一个数组中 这意味着我们不仅需要将对象复
  • 正则表达式中连字符的这种用法有效吗?

    NB I only想知道它是否是正则表达式定义中未转义连字符的有效应用 它是not关于匹配电子邮件 连字符或反斜杠的含义 量词或其他任何内容的问题 另外 请注意 链接的答案并没有真正讨论转义 未转义连字符之间的有效性问题 通常我会像这样声明
  • jQuery:将文本区域滚动到给定位置

    我有一个包含很多文本的文本区域
  • AngularJS + jQuery 移动

    是否还有其他可能性来设计AngularJS以移动友好的方式应用程序CSS 我正在计划一个移动应用程序 并希望使用 AngularJS 进行逻辑和数据绑定 但我不想自己设计所有内容CSS The AngularJSFAQ说它使用jQuery
  • Chrome --app 相当于 Firefox\IE

    我有一个网络应用程序 客户要求单击不同按钮时更改浏览器窗口大小 我发现在那link https stackoverflow com questions 13436855 launch google chrome from the comma
  • 可以禁用幻灯片的触摸模拟但不能禁用滚动条(危险的滑动器)吗?

    我的页面上有一个危险的滑动器 它成功地模拟了幻灯片和随附滚动条上的触摸事件 允许单击鼠标并移动以向左或向右滑动幻灯片 这很好 但我现在在滑动器内的幻灯片上调用了可拖动 这意味着我需要停止此触摸模拟 拖动幻灯片并同时移动它们会引起混乱 但仅限
  • 从链接打开本地文件夹

    如何通过单击任何链接打开本地文件夹视图 我尝试了很多选择 例如 a href Open folder a or a Open folder a or a Open folder a 解决方案 启动可下载链接 以下内容适用于所有浏览器 但一如
  • 如何在 React Native 中使用相同的 Firebase 数据库在两个应用程序之间进行通信?

    我有两个不同的应用程序使用相同的实时数据库 在第一个应用程序中 我发送的订单包含一些要保存在数据库中的数据字段 在另一个应用程序中 我只添加一个侦听器 firebase database ref userOrder currentUser
  • 如何跨多个文件跨越 javascript 命名空间?

    我永远忽略了javascript 几年前我开始使用 jQuery 这样我就可以过得去 但随着我开始更多地进行 TDD 我昨天决定真正深入研究 javascript 之后可能还有咖啡脚本 在我的 ASP NET Web 窗体应用程序中 我有很
  • jQuery Mobile + Admob:轮换?

    我使用 jQuery Mobile 框架创建了一个移动应用程序 所有页面都在index php中加载 使用 div 在每个页面的页脚中 我添加了Admob代码 div div div
  • 将引导程序弹出框保留在视口内

    我正在尝试使用带有按钮的侧边栏创建一个菜单 每个按钮都有一个指定的包含相关数据的弹出窗口 不幸的是 其中一个弹出窗口可能包含任意数量的行 并且在某些情况下它可能部分位于视口之外 See http jsfiddle net bfd9f 1 h

随机推荐

  • FileStream.Dispose 是否立即关闭文件?

    我有一些代码 通过使用 MemoryStream WriteTo 将 MemoryStream 保存到 FileStream 来写入文件 文件关闭后再次打开以读取一些元数据 这在 80 90 的情况下有效 另外 20 我收到一个异常 说该文
  • 如何验证 Apple APN 设备令牌 - WCF .NET

    我正在构建一个 WCF REST Web 服务 移动应用程序调用该服务将 Apple 设备令牌插入数据库 我想在插入数据库之前验证设备令牌 是否有办法验证设备令牌以了解其是否有效 我在论坛上进行了搜索 但找不到任何示例代码 在 NET 中
  • 将 UITabBarItem 图像向下移动?

    通常在每个选项卡上UITabBar您有一个小图像和一个命名该选项卡的标题 图像位于选项卡顶部 居中以容纳下面的标题 我的问题是 如果你想要一个只有图像而没有标题的 tabBar 有没有办法将图像向下移动 以便它在选项卡中更好地居中 我目前正
  • 将 iframe 插入到 React 组件中

    我有一个小问题 从服务请求数据后 我得到了一个 iframe 代码作为响应 我想将其作为道具传递给我的模态组件并显示它 但是当我简单地 this props iframe 它在渲染函数中显然将其显示为字符串 在 React 中或使用 JSX
  • 使用 PHP 从纯文本和 HTML 文本的混合创建 PDF [重复]

    这个问题在这里已经有答案了 可能的重复 使用 PHP 将 HTML CSS 转换为 PDF https stackoverflow com questions 391005 convert html css to pdf with php
  • 在 UITableView 中对齐多个运行时生成的 UILabels

    我有一个UITableView需要通过列出类似的样式来支持内容 But the tricky part is that the amount of Label will vary with each cell some may have o
  • 在 Visual Studio 2015 中从 *.ts 生成 *.js

    当我将 ts 文件添加到 Visual Studio 2015 并对其进行编译时 js 文件不是 ts 的代码隐藏文件 它仅驻留在该文件夹中 而不是 Visual Studio 项目的一部分 这是设计使然还是我破坏了项目中的某些内容 如果是
  • 评估软件最低要求

    有没有办法评估软件的最低要求 我的意思是 我怎样才能发现我的应用程序需要的最小 RAM 量 Thanks 分析器在这里不会为您提供帮助 也不会估计数据结构的大小 探查器当然可以告诉您代码在哪里花费了最多的 CPU 时间 但它不会告诉您是否未
  • 如何从包含联系人详细信息且对象不在电话簿中的对象生成 .vcf 文件

    我想为一个对象生成一个 vcf 文件 其中包含姓名 图像 电话号码 传真号码 电子邮件地址 地址等联系信息 该对象未添加到手机的通讯录中 但存储在我的地址簿中 应用 生成 vcf 文件后 我可以像这样发送此 vcard Intent i n
  • Android 上的自定义字体和自定义 Textview

    从我需要开发的应用程序中 我收到了一种特定字体 其中包含许多文件 例如 FontName Regular 字体名称 粗体 字体名称 我需要在应用程序的所有文本视图中使用它 首先我认为这是一项容易的任务 查看SO并发现一个非常好的线程 her
  • C# Windows 控制台应用程序如何判断它是否以交互方式运行

    用 C 编写的 Windows 控制台应用程序如何确定它是在非交互式环境 例如从服务或计划任务 中调用还是在能够用户交互的环境 例如命令提示符或 PowerShell 中调用 编辑 4 2021 新答案 由于 Visual Studio 调
  • 使用 PyGame 将基于百分比的颜色值从绿色更改为红色

    我正在尝试制作一个健康栏 根据健康百分比将绿色缩放为红色 基本上 我试图使值 0 5 对应于 255 255 0 值 1 0 对应于 0 255 0 值 0 0 对应于 255 0 0 我看见这个帖子 https stackoverflow
  • 如何使用 cmake 编译 MPI 包含的 c 程序

    我正在尝试将 openmp 和 mpi 技术应用于需要构建 cmake make 的开源 C 程序 我已经找到了如何在 CMake 的 try compile 函数中设置 OpenMP 的链接器标志 https stackoverflow
  • 在 PostgreSQL 中使用 r sf::st_write 到非公共模式

    我正在尝试将空间表写入不是 PostgreSQL 数据库中默认公共模式的模式 library sf library DBI library RPostgreSQL library spData PostgreSQL DB parameter
  • 为什么我收到此错误警告:空感知操作的操作数“??”具有排除 null 的“Color”类型

    我正在使用这个包 flutter datetime picker 1 5 1 这是我的代码 String date Please pick Age Widget buildage return Column crossAxisAlignme
  • 根据另一个单元格的数值更改 x 个单元格的颜色

    I have range and i want to highlight my range of cells based value i enter in cell Range C5 If i enter 5 in cell C5 then
  • RPScreenRecorder stopRecording 块没有被调用

    我已经进行了足够的搜索 但未能找到解决方案 我正在使用 ReplayKit 来录制我的应用程序的屏幕 我已开始通过调用录制屏幕 let sharedRecorder RPScreenRecorder shared sharedRecorde
  • 通过多索引选择

    我有两个数据框 df a pd DataFrame data A B C A1 B1 C1 columns first secound third df a set index first secound inplace True df b
  • Java语言检测

    实际上 我正在使用 java 语言检测来检测文本语言 但出现以下错误 Exception in thread main java lang IllegalAccessError tried to access field com cyboz
  • 如何在 QML 上使用 JavaScript 库

    我在 5 12 2 上使用一些带有 QML 的 javascript 库 其中一些像 Proj4JS 一样工作 但我在使用时遇到错误地理库 js https geographiclib sourceforge io scripts geog