【QML】QML与C++混合编程,结构体参数互相传递

1. 方法1:

C++结构体的每个成员都声明成QML的属性。QML中就可以直接以属性的方式读写。

.h文件

typedef struct {QString startRecord;QString fanSpeed;QString scrBrightness;QString printerType;
} ManuSet_t;class ManuSet : public QObject
{Q_OBJECTQ_PROPERTY(QString startRecord READ startRecord WRITE setStartRecord NOTIFY startRecordChanged)Q_PROPERTY(QString fanSpeed READ fanSpeed WRITE setFanSpeed NOTIFY fanSpeedChanged)Q_PROPERTY(QString scrBrightness READ scrBrightness WRITE setScrBrightness NOTIFY scrBrightnessChanged)Q_PROPERTY(QString printerType READ printerType WRITE setPrinterType NOTIFY printerTypeChanged)public:QString startRecord();void setStartRecord(const QString &para);QString fanSpeed();void setFanSpeed(const QString &para);QString scrBrightness();void setScrBrightness(const QString &para);QString printerType();void setPrinterType(const QString &para);signals:void startRecordChanged();void fanSpeedChanged();void scrBrightnessChanged();void printerTypeChanged();
}

.cpp文件中实现

main.cpp中注册类型

qmlRegisterType<ManuSet>("com.custom", 1, 0, "ManuSet");

qml文件中直接使用

import com.custom 1.0ManuSet{id: _msstartRecord: "test"
}

2. 方法2:

QVariantMap 的方式。

2.1 C++发送给QML

结构体

struct Info
{float tmp;              // 温度int day_code;           // 白天天气代码QString day_text;       // 白天天气情况int night_code;         // 夜间天气代码QString night_text;     // 夜间天气情况
};

C++代码

//在minxCppDemo类中声明和定义
QVariantMap MixCppDemo::getInfo(Info *m_Info)
{QVariantMap map;map.clear();map.insert("tmp", m_Info->tmp);map.insert("day_code", m_Info->day_code);map.insert("day_text", m_Info->day_text);map.insert("night_code", m_Info->night_code);map.insert("night_text", m_Info->night_text);return map;
}

QML代码

MixCppDemo {id: minxCppDemo
}Component.onCompleted: {var textString = ''// 显示天气信息var currentInfo = minxCppDemo.getInfo()textString += '温度:' 	     + currentInfo.tmp.toString() + '\n';textString += '白天天气代码: ' + currentInfo.day_code.toString() + '\n'textString += '白天天气情况: ' + currentInfo.day_text + '\n'textString += '夜间天气代码: ' + currentInfo.night_code.toString() + '\n'textString += '夜间天气情况: ' + currentInfo.night_text + '\n\n'console.log(textString);
}

2.2 QML发送给C++

结构体

struct Info
{float tmp;              // 温度int day_code;           // 白天天气代码QString day_text;       // 白天天气情况int night_code;         // 夜间天气代码QString night_text;     // 夜间天气情况
};

QML代码

MixCppDemo {id: minxCppDemo
}function test(){var map = {};map.tmp = 25.5;//map["tmp"] = 25.5; //与上面的代码效果一样map.day_code = 1;map.day_text = "2";map.night_code = 3;map.night_text  = "4";minxCppDemo.setInfo(map);
}

C++代码

Info m_Info;void MixCppDemo::setInfo(const QVariantMap map)
{m_Info.tmp = map.value("tmp").toString();//...qDebug() << map.value("tmp").toString();qDebug() << map.value("day_code").toString();qDebug() << map.value("day_text").toString();qDebug() << map.value("night_code").toString();qDebug() << map.value("night_text").toString();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/148840.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea 环境搭建及运行java后端源码

1、 idea 历史版本下载及安装 建议下载和我一样的版本&#xff0c;2020.3 https://www.jetbrains.com/idea/download/other.html&#xff0c;idea分为专业版本&#xff08;Ultimate&#xff09;和社区版本&#xff08;Community&#xff09;&#xff0c;前期可以下载专业版本…

【pytorch深度学习 应用篇02】训练中loss图的解读,训练中的问题与经验汇总

文章目录 loss图解析train loss ↘ \searrow ↘ ↗ \nearrow ↗ 先降后升 loss图解析 train loss ↘ \searrow ↘ 不断下降&#xff0c;test loss ↗ \nearrow ↗ 不断上升&#xff1a;原因很多&#xff0c;我是把workers1&#xff0c;batchSize8192train loss ↘ \searro…

Java系列之 解决 项目 jar 包无法上传到Github

我 | 在这里 &#x1f575;️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 &#x1f3e0; 工作 | 广州 ⭐ Java 全栈开发&#xff08;软件工程师&#xff09; &#x1f383; 爱好 | 研究技术、旅游、阅读、运动、喜欢流行歌曲 &#x1f3f7;️ 标签 | 男 自律狂人 目标明确 责任心强 ✈️公…

软件运维常见面试题

软件运维常见面试题 文章目录 软件运维常见面试题1、请说出在TCP/IP五层参考模型中&#xff0c;从下网上分别指的是&#xff1f;2、请说出OSI七层参考模型中&#xff0c;从下往上分别指得是&#xff1f;3、交换机的工作原理中&#xff0c;不包含下列那个选项&#xff1f;4、请说…

动态规划专项---最长上升子序列模型

文章目录 怪盗基德的滑翔翼登山合唱队形友好城市最大上升子序列和拦截导弹导弹防御系统最长公共上升子序列 一、怪盗基德的滑翔翼OJ链接 本题思路:本题是上升子序列模型中比较简单的模型&#xff0c;分别是从前往后和从后往前走一遍LIS即可。 #include <bits/stdc.h>co…

新零售系统平台解决方案 线上线下小程序怎么做

新零售线上线下解决方案是将传统零售业务与互联网科技相结合&#xff0c;通过数字化、智能化手段提升零售业务效率和用户体验的解决方案&#xff0c;它既有提供消费者线下体验&#xff0c;强调“稳”&#xff0c;又有互联网线上的“快”。 线上线下小程序可以通过一体化的进销存…

拒绝服务攻击工具的编写

预计更新网络扫描工具的编写漏洞扫描工具的编写Web渗透测试工具的编写密码破解工具的编写漏洞利用工具的编写拒绝服务攻击工具的编写密码保护工具的编写情报收集工具的编写 拒绝服务攻击是一种恶意攻击&#xff0c;旨在使目标系统无法正常工作。这种攻击通常通过发送大量流量或…

Windows核心编程 静态库与动态库

资源文件 .rc 文件 会被 rc.exe 变成 .res 文件(二进制文件) 在链接时链接进入 .exe 文件 一、如何保护源码 程序编译链接过程 不想让别人拿到源代码&#xff0c;但是想让其使用功能&#xff0c;根据上图观察&#xff0c;把自己生成的obj给对方&#xff0c;对方拿到obj后&…

详解ssh远程登录服务

华子目录 简介概念功能 分类文字接口图形接口 文字接口ssh连接服务器浅浅介绍一下加密技术凯撒加密加密分类对称加密非对称加密非对称加密方法&#xff08;也叫公钥加密&#xff09; ssh两大类认证方式&#xff1a;连接加密技术简介密钥解析 ssh工作过程版本协商阶段密钥和算法…

国科大数据挖掘期末复习——聚类分析

聚类分析 将物理或抽象对象的集合分组成为由类似的对象组成的多个类的过程被称为聚类。由聚类所生 成的簇是一组数据对象的集合&#xff0c;这些对象与同一个簇中的对象彼此相似&#xff0c;与其他簇中的对象相异。 聚类属于无监督学习&#xff08;unsupervised learning&…

青岛数字孪生赋能工业制造,加速推进制造业数字化转型

随着企业数字化进程的推进&#xff0c;数字孪生技术逐渐在汽车行业得到广泛应用。5G与数字孪生、工业互联网的融合将加速数字中国、智慧社会建设&#xff0c;加速中国新型工业化进程&#xff0c;为中国经济发展注入新动能。数字孪生、工业物联网、工业互联网等新一代信息通信技…

asp.net健身会所管理系统sqlserver

asp.net健身会所管理系统sqlserver说明文档 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 主要技术&#xff1a; 基于asp.net架构和sql server数据库 功能模块&#xff1a; 首页 会员注册 教练预约 系统公告 健身课程 在线办卡 用户中心[修改个人信息 修…

Python与ArcGIS系列(九)自定义python地理处理工具

目录 0 简述1 创建自定义地理处理工具2 创建python工具箱0 简述 在arcgis中可以进行自定义工具箱,将脚本嵌入到自定义的可交互窗口工具中。本篇将介绍如何利用arcpy实现创建自定义地理处理工具以及创建python工具箱。 1 创建自定义地理处理工具 在arctoolbox中的自定义工具箱…

上海亚商投顾:三大指数小幅上涨 HBM概念股全天强势

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 三大指数早盘窄幅震荡&#xff0c;午后集体拉升翻红&#xff0c;黄白二线走势分化&#xff0c;题材热点快速轮…

数据结构及八种常用数据结构简介

data-structure 数据结构是一种存在某种关系的元素的集合。“数据” 是指元素&#xff1b;“结构” 是指元素之间存在的关系&#xff0c;分为 “逻辑结构” 和 “物理结构&#xff08;又称存储结构&#xff09;”。 常用的数据结构有 数组&#xff08;array&#xff09;、栈&…

【Django-DRF用法】多年积累md笔记,第(4)篇:Django-DRF反序列化详解

本文从分析现在流行的前后端分离Web应用模式说起&#xff0c;然后介绍如何设计REST API&#xff0c;通过使用Django来实现一个REST API为例&#xff0c;明确后端开发REST API要做的最核心工作&#xff0c;然后介绍Django REST framework能帮助我们简化开发REST API的工作。 全…

.NET 8.0 中有哪些新的变化?

1性能提升 .NET 8在整个堆栈中带来了数千项性能改进 。默认情况下会启用一种名为动态配置文件引导优化 (PGO) 的新代码生成器&#xff0c;它可以根据实际使用情况优化代码&#xff0c;并且可以将应用程序的性能提高高达 20%。现在支持的 AVX-512 指令集能够对 512 位数据向量执…

配置VNC环境时,出现xauth: file /root/.Xauthority does not exist的解决方案。

问题描述 在配置VNC&#xff08;Virtual Network Computing&#xff09;环境的过程时&#xff0c;首先安装了tigervnc-server包。在使用&#xff1a; vncserver命令创建VNC会话号的时候出现了一个报错&#xff1a;xauth: file /root/.Xauthority does not exist 原因分析&…

mac清除所有数据,不抹除的情况下如何实现?

mac清除所有数据是一个比较复杂的任务&#xff0c;尤其是在不进行系统抹除的情况下。但是&#xff0c;如果你想要将mac完全恢复到出厂设置的状态&#xff0c;同时保留数据&#xff0c;本文将介绍一些可行的方法&#xff0c;帮助您在不抹除硬盘数据的情况下&#xff0c;让mac清除…

.Net Web项目创建比较不错的参考文章

创建 ASP.NET WebApi项目框架搭建 细节理解 ASP.NET WEB API 之属性路由 - 简书 授权 C# WebAPI 中过滤器Filter应用之IP访问控制_c#过滤器_MarcoPro的博客-CSDN博客 Log4Net配置 工具类 C# Log4net的使用 - 知乎