当前位置: 首页 > news >正文

QML学习笔记(五十三)QML与C++交互:数据转换——序列类型与 JavaScript 数组的转换

前言

本节介绍一下序列类型和数组之间的转换,简单来说就是C++的QVetor和qml中的数组之间的转换。

一、代码示例

只展示核心代码:

class CppClass : public QObject
{Q_OBJECTpublic:explicit CppClass(QObject *parent = nullptr);Q_INVOKABLE void qmlArrayToCpp(QVector<QString> vector);Q_INVOKABLE QVector<QString> retrieveStrings();
private:QVector<QString> mVector;
};
#include "cppclass.h"
#include <QDebug>CppClass::CppClass(QObject *parent) : QObject(parent)
{mVector.append("One");mVector.append("Two");mVector.append("Three");mVector.append("Four");
}void CppClass::qmlArrayToCpp(QVector<QString> vector)
{foreach (QString string, vector){qDebug()<< string;}
}QVector<QString> CppClass::retrieveStrings()
{return mVector;
}
import QtQuick 2.14
import QtQuick.Window 2.14
import QtQuick.Controls 2.12
import com.mycompany 1.0Window {// ...CppClass{id: cppClassId}Button{id: buttonId}Button{id:button1Idtext:"Send to C++"x: buttonId.x + buttonId.widthonClicked:function(){var arr = ['Apple', 'Banana','Avocado','Pear','Orange'];cppClassId.qmlArrayToCpp(arr)}}Button{id: button2Idtext:"Read form C++"anchors.left: button1Id.rightonClicked:function(){var arr = cppClassId.retrieveStrings()print("The length of the array is:"+ arr.length)arr.forEach(function(element){console.log(element)})}}
}

在这里插入图片描述

打印:
在这里插入图片描述
可以看到,其实并不需要什么特殊处理的转换,qt会自动匹配转换的。

二、总结

这种数组和序列的数据是很常见的变量,从C++发送到qml进行前端展示,或者从qml端搜集后要发送到C++端进行存储和管理都是很常见的需求。

http://www.dtcms.com/a/577873.html

相关文章:

  • Spring AI Alibaba语音合成实战:从零开始实现文本转语音功能
  • 科技向善,让养老更有温度——智慧养老的痛点破局与趋势前瞻
  • flink开发遇到的问题
  • “IP 地址” 咋分类?用 “电话号码分区” 讲透 A/B/C 类地址​
  • 网站建站服务公司网站建设和续费
  • 北京朝阳双桥网站建设wordpress设置侧边栏
  • 极简后台框架
  • 基于 Python + OpenCV 的人脸识别系统开发实战
  • 智慧康养新篇章:七彩喜如何重塑老年生活的温度与尊严
  • 【生活】做面包-免揉软吐司制作教程
  • 优艾智合亮相中国 — 东盟青年和平对话会践行科技向善
  • 物联网技术助力成为雾霾治理的科技利器
  • 【轨物方案】轨物科技低压综保智慧运维方案:以AIoT重塑电气安全与能效新范式
  • 商丘做微信网站sqwyy深圳市设计网站公司
  • 【音视频】MP4文件格式
  • 旅游|内蒙古景点旅游|基于Springboot+Vue的内蒙古景点旅游管理系统设计与实现(源码+数据库+文档)
  • py day32 元组与os
  • 非接触式高效检测:基于XTOM蓝光3D扫描技术的3C电子零部件全尺寸快速测量方案
  • wordpress熊账号网站建立好如何做seo
  • 外贸网站怎样做推广南通网站定制哪家好
  • JSON转CSV批量转换工具:高效处理结构化数据
  • ubuntu 部署 gitlab docker服务
  • 使用VMware安装centos的详细流程(保姆级教程)
  • Xshell免密钥登录CentOS7教程
  • Linux基础开发工具----yum、vim和gcc/g++
  • FileRise 让文件管理变简单,搭配cpolar实现远程自由访问
  • 企业官网模板站上海网站推广服务
  • 3.5.6 高速缓冲存储器【2010统考真题】
  • 好用的网站系统wordpress+任务发布插件
  • 2025年应用统计与数学国际会议(ICASM 2025)