前言

C++中的 list 和 map 使用非常方便, 对应到 Qt 中的类型为 QList 和 QMap,在和 QML 交互的时候,可能也想用到这两个类型,或者说将 C++中的参数和 QML 中的参数进行相互转换使用,在 QML 中用到的是 JavaScript 语法,那么,今天来看一下如何在 C++和 QML 之前来对这两个类型进行相互转换使用。

正文

先明确一点,要在 C++和 QML 中使用 list 和 map 类型,不是直接使用 QList 和 QMap,而是另外两个来替换QVariantList 和 QVariantMap,而这两个只是 QList 和 QMap 的一个重定义的别名,先来看看其定义:

typedef QVariantMap
Synonym for QMap<QString, QVariant>.typedef QVariantList
Synonym for QList<QVariant>.

所以其使用方法都是一样的。
接着直接来看示例:

先看看 QML 中的代码:

// MyItem.qml
Item {function readValues(anArray, anObject) {for (var i=0; i<anArray.length; i++)console.log("Array item:", anArray[i])for (var prop in anObject) {console.log("Object item:", prop, "=", anObject[prop])}}
}

接着来看 C++中的调用方法:

// C++
QQuickView view(QUrl::fromLocalFile("MyItem.qml"));QVariantList list;
list << 10 << QColor(Qt::green) << "bottles";QVariantMap map;
map.insert("language", "QML");
map.insert("released", QDate(2010, 9, 21));QMetaObject::invokeMethod(view.rootObject(), "readValues",Q_ARG(QVariant, QVariant::fromValue(list)),Q_ARG(QVariant, QVariant::fromValue(map)));

C++中定义了List 和 Map 类型,并调用 QML 中的函数,并在 QML 函数中将数据打印出来。
输出结果:

Array item: 10
Array item: #00ff00
Array item: bottles
Object item: language = QML
Object item: released = Tue Sep 21 2010 00:00:00 GMT+1000 (EST)

以上示例演示了如何将 C++中的 list 和 map 类型转换到 QML 中进行使用。那么,如果要将 QML 中的这两个类型转换到 C++中使用,也是一样的用法,可以在QML中将值创建为JavaScript数组或对象,并在将值传递给C ++时自动转换为QVariantList或QVariantMap。

Qt C++中 Map 和 List 转换到 QML 中使用相关推荐

  1. python中map函数是什么意思_python中map什么意思

    python中map什么意思? python中map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 func ...

  2. JavaScript判断字符串中包含另一个字符串(QML 中使用)

    前言 为啥会搞JavaScript呢,原因很简单,因为 QML 中用到了 JS 的语法,本来在 Qt 里面 QString 检查字符串是否包含一个子串是非常简单的事情,直接用contains()函数就 ...

  3. JS 中 Map 与 JSON 转换

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. JSON数据 转 字符串 JSON.stringify(jsondata) 2. 字符串 转 ...

  4. 异步方法中map、forEach和for循环中带来的异步执行问题

    关键词:map() forEach() for() 异步执行 res.jsonp() CSDN个人博客:http://blog.csdn.net/sam976 问题描述 在map循环中使用mongoo ...

  5. python中map函数的作用是_python中map()函数

    map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. map()是 Python 内 ...

  6. python中map函数返回值类型_Python中的map

    map函数会根据提供的函数对指定序列做映射. map函数的定义: map(function, sequence[, sequence, ...]) -> list 通过定义可以看到,这个函数的第 ...

  7. ssis 列转换_SSIS包中的行采样转换和百分比采样转换

    ssis 列转换 This article explores Row Sampling Transformations in SSIS and Percentage Sampling Transfor ...

  8. JAVA中map转换成实体对象

    /** @ClassName:QueryVOToBeanUtil @author: 短笛吟风 @description:TODO @createDate: 2020/2/18 @version: 1. ...

  9. 在 Linux 中把一个网页转换成 PDF的技巧介绍

    你如何在 Linux 中把一个网页转换成 PDF?你可以选择使用每个 Linux 发行版上的网页浏览器(GUI),或者使用终端将网页变成 PDF 文件. 在这里,我将提到这两种方法来帮助你完成工作. ...

最新文章

  1. 应用层下的人脸识别(四):人脸研判
  2. 如何从零构建实时的个性化推荐系统?
  3. java.lang.Math
  4. [mmu/cache]-cache的一些基本概念介绍
  5. 不是区块链的特征_上市公司日照港物流区块链平台上线,不是谁都能玩“区块链+物流”?...
  6. ApacheCN 安卓译文集 20211225 更新
  7. 凸优化有关的数值线性代数知识五:作业题
  8. 什么是安全查找Bean,什么是非安全查找Bean?如何安全地查找Bean?
  9. MySQL入门学习笔记
  10. 【图像配准】基于surf算法实现图像配准附Matlab代码
  11. VRay材质练习(一):水、玻璃、牛奶
  12. office 2016 word文档另存为pdf之后文本内容显示不全
  13. 程序员经历过的最难调试的Bug是什么?
  14. linux的一些命令
  15. 智慧燃气系统基于GIS技术的搭建
  16. PartNet: A Recursive Part Decomposition Network for Fine-grained and Hierarchical Shape Segmentation
  17. linux c语言 cmos,c语言编写程序读写CMOS内容
  18. Python学习之Part09.高阶函数filter(),map(),reduce(),sorted()
  19. 物理层一致性(Compliance)测试
  20. 武大计算机博士毕业生工资,北航、交大、武大…中国重点大学毕业生工资公布,你达标了吗?...

热门文章

  1. 搜索推荐炼丹笔记:融合GNN、图谱、多模态的推荐
  2. “远程银行”优秀厂商认证!网易云信入选《区域性银行数字化厂商全景报告》...
  3. 2018-06-13(日常运维三)
  4. 什么是二维数组?二维遍历?Java二维数组制作图片迷宫 使用如鹏游戏引擎制作窗口界面 附带压缩包下载,解压后双击start.bat启动...
  5. nodejs全局安装和本地安装的区别
  6. Java常用系统变量收集
  7. Chmod 提升一个文件夹下所有文件(夹)的权限
  8. 机器学习与数学分析(二)
  9. Web 趋势榜:上周最热门的 10 大 Web 项目 - 210410
  10. reactjs redux异步action