背景:

【qml-5】qml与c++交互(类型单例)

之前记录过qml与c++交互的方式,目前为止我使用的是“类型单例”方式。这些名字是我自己起的,只为说明问题,严谨的还是以手册为准。

“类型单例”方式时提到过自动补全提示问题,就如前置声明和头文件一样,需要注册类型,所以以前我是这样做的:

    qmlRegisterType<CppGrid>("CppGrid", 1, 0, "CppGrid");qmlRegisterSingletonInstance("CppGrid", 1, 0, "CppGrid", CppGrid::instance());

最早的时候我每写一个类,都会给它注册一个单独的uri,用于qml的import。后来发现有时候即使注册了类型也不能补全提示。

我的初衷是,要心情愉悦地写qml,就一定要解决自动补全提示的问题,每次在类型名后面打点必须给出提示。网上搜了一堆,一个比一个麻烦,我就是要简洁,不修改cmake,不用qmldir和目录,除了简单加极少代码其它一概不用,只改涉及一处,好维护好理解。

所以开始研究。

URI:

这个用于qml import的uri,后来我想干脆都用一个算了,因为目前的项目规模有限,分太细没必要,书写繁琐,所以后来都用“Cpp”取代了。

注册函数:

以前像上面那样使用注册函数,初衷就是为了简洁好管理。

但终归发现注册类型和单例同时存在会有问题,因为使用了同一个模块(uri),又用同一个类型名,它就有可能不稳定。总之就是不建议一起用。

所以查询了AI和手册,最终确定了更简洁的用法:

    qmlRegisterSingletonType<CppGrid>("CppSingleton", 1, 0, "CppGrid",[](QQmlEngine*, QJSEngine*) { return CppGrid::instance(); });

凡是需要单例注册的,就这样一行即可。导入时只需要import CppSingleton,再使用CppGrid打点时,一定会出现补全提示。

项目中我还做了一个分页组件,需要qml和c++协作,所以它专属的CppPage类型,我没有使用单例,而是类型注册,因为需要每个调用它的ui有独立的信号槽,就必须每个ui实例化。所以目前只有这个是使用类型注册的。

    qmlRegisterType<CppPage>("CppType", 1, 0, "CppPage");

uri就用“CppType”吧,以后有其它需要类型注册的,也用这个名字,不分太细了,累。

总结:

本次记录的目的,就是因为曾遇到了补全提示不正常的情况,一定要搞定它,写qml才舒服。

本文完。

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

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

相关文章

网页提示UI操作-适应提示,警告,信息——仙盟创梦IDE

代码<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>原生动态提示框</title><style>…

第八篇 永磁同步电机控制-MTPA、MTPV

永磁同步电机控制系列课程&#xff1a; 第一篇 永磁同步电机控制-认识电机 第二篇 永磁同步电机控制-电机的分类 第三篇 永磁同步电机控制-硬件基础知识 第四篇 永磁同步电机控制-软件基础知识 第五篇 永磁同步电机控制-数学模型 第六篇 永磁同步电机控制-控制方法 第七…

JAVA:Spring Boot 集成 Temporal 实现订单处理系统

🛠 1、简述 在现代分布式系统中,订单处理涉及多步骤工作流(如库存扣减、支付确认、物流派单等)。为了确保这些步骤的 可靠性、可观测性 和 容错性,我们可以使用 Temporal 实现工作流管理。 本文将介绍如何在 Spring Boot 中集成 Temporal,并通过一个订单处理的实际案例…

服务器硬件电路设计之 SPI 问答(六):如何提升服务器硬件电路中的性能?如何强化稳定性?

在服务器 SPI 硬件设计中&#xff0c;通信性能&#xff08;如传输速率、数据吞吐量&#xff09;与稳定性&#xff08;抗干扰、误码率&#xff09;直接决定外设响应效率&#xff0c;需从硬件设计、参数配置、干扰抑制三方面系统优化。一、性能优化核心策略&#xff1a;根据 SPI …

Web 聊天室消息加解密方案详解

目录 ​编辑 一、Web 聊天室消息加解密需求与技术约束 1.1 核心安全需求 1.2 技术约束 二、主流消息加解密方案详解 2.1 方案 1&#xff1a;对称加密&#xff08;AES-256-GCM&#xff09; 2.1.1 方案概述 2.1.2 核心原理 2.1.3 实现步骤&#xff08;分场景&#xff09…

组合导航 | RTK、IMU与激光雷达组合导航算法:原理、实现与验证

RTK、IMU与激光雷达组合导航算法:原理、实现与验证 文章目录 RTK、IMU与激光雷达组合导航算法:原理、实现与验证 一、组合导航系统原理与数学模型 1.1 传感器特性与互补性分析 1.2 系统状态方程构建 1.3 多源观测方程设计 (1)RTK观测模型 (2)激光雷达观测模型 (3)多源观…

使用Cadence工具完成数模混合设计流程简介

众所周知&#xff0c;Cadence的Virtuoso是模拟设计领域的核心工具&#xff0c;市占率达到75%&#xff0c;随着近些年来Cadence在数字版图设计&#xff08;APR&#xff09;领域的崛起&#xff0c;invs&#xff0c;PVS等一众工具也都成了很多公司的首选后端流程工具。依照强强联合…

FunASR人工智能语音转写服务本地部署测试

前提条件&#xff1a;本机&#xff1a;windows11 &#xff0c;已安装docker1.下载镜像使用命令下载docker镜像docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.13下载完成后&#xff0c;建立文件夹储存之后需要下载的模型…

Python OpenCV图像处理与深度学习

Python OpenCV图像处理与深度学习 1. Python OpenCV入门&#xff1a;图像处理基础 2. Python OpenCV开发环境搭建与入门 3. Python OpenCV图像处理基础 4. Python OpenCV视频处理入门 5. Python OpenCV图像几何变换入门 6. Python OpenCV图像滤波入门 7. Python OpenCV边缘检测…

C# SIMD编程实践:工业数据处理性能优化案例

性能奇迹的开始 想象一下这样的场景&#xff1a;一台精密的工业扫描设备每次检测都会产生200万个浮点数据&#xff0c;需要我们计算出最大值、最小值、平均值和方差来判断工件是否合格。使用传统的C#循环处理&#xff0c;每次计算需要几秒钟时间&#xff0c;严重影响生产线效率…

XHR 介绍及实践

What is it? XML(XMLHttpRequest) 是浏览器提供的一种用于前端页面和后端服务器进行异步通信的编程接口。它允许在不重新加载整个页面的情况下&#xff0c;与服务器交换数据并更新部分页面内容&#xff0c;是 AJAX 技术的核心。 What is it used for? 异步请求&#xff1a;在…

【量化回测】backtracker整体架构和使用示例

backtrader整体框架 backtrader 是一个量化回测的库&#xff0c;支持多品种、多策略、多周期的回测和交易。更重要的是可以集成 torch 等神经网络分析模块。Cerebro类是 backtrader 的核心。Strategy类、Broker和Sizer类都是由Cerebro类实例化而来。 整体流程 backtrade 自带的…

【python+requests】一键切换测试环境:Windows 下环境变量设置指南

一键切换测试环境&#xff1a;Windows 下环境变量设置指南教你如何通过一个命令让测试脚本自动识别不同环境的配置文件你是否遇到过这种情况&#xff1a;同一套测试脚本&#xff0c;需要在测试环境、开发环境、预发布环境、生产环境等多种配置中切换&#xff1f;每次都要手动修…

备份压缩存储优化方案:提升效率与节省空间的完整指南

在数字化时代&#xff0c;数据备份已成为企业运营的关键环节。本文将深入探讨备份压缩存储优化方案&#xff0c;从技术原理到实施策略&#xff0c;为您提供一套完整的存储空间节省与性能提升解决方案。我们将分析不同压缩算法的适用场景&#xff0c;揭示存储架构优化的关键技巧…

【图像算法 - 25】基于深度学习 YOLOv11 与 OpenCV 实现人员跌倒识别系统(人体姿态估计版本)

摘要&#xff1a; 本文将详细介绍如何利用先进的深度学习目标检测算法 YOLOv11 结合 OpenCV 计算机视觉库&#xff0c;构建一个高效、实时的人员跌倒识别系统。跌倒检测在智慧养老、安防监控、工业安全等领域至关重要。我们将从环境搭建、数据准备、模型训练到跌倒行为判断逻辑…

数据结构--栈(Stack) 队列(Queue)

一、栈&#xff08;Stack&#xff09;1. 栈的定义栈&#xff08;Stack&#xff09;是一种 先进后出&#xff08;LIFO, Last In First Out&#xff09; 的数据结构。就像一摞书&#xff1a;最后放的书最先拿走。2. 栈的常用方法&#xff08;Stack 类&#xff09;Stack<E> …

FART 主动调用组件深度解析:破解 ART 下函数抽取壳的终极武器

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ FART 的主动调用组件 在 Android 逆向与脱壳领域&#xff0c;早期的自动化脱壳方案&#xff08;如 DexHunter、FUPK3&#xff09;主要运行在 Dalvik 环境&…

基于有限元分析法的热压成型过程中结构变形和堆积matlab模拟与仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.部分程序 4.算法理论概述 5.完整程序 1.程序功能描述 在压印过程中&#xff0c;一般情况下&#xff0c;我们遵循质量&#xff0c;动量和能量守恒的原则进行仿真。然后建立偏微分方程组&#xff0c;然后通过有限元的…

CF每日3题(1500-1600)

1809C 神必构造题 对子数组的和考虑使用前缀和&#xff0c;发现逆序对的规律&#xff0c;构造1797C 神奇交互题 需要找特殊的点确定位置2132D 神奇数位题 需要用二分logk优化复杂度&#xff0c;把数位转换成能到的上限数aim 1809C 构造 前缀和 逆序对 思维 排序 1500 /* 神必构…

Linux学习——sqlite3

1.sqlite3的使用1.打开数据库sqlite3 stu.db //database2.操作输入 sqlite3&#xff0c;进入软件后&#xff0c;输入 sqlite3 软件自带的命令&#xff08;.help&#xff0c;.databases&#xff0c;quit&#xff0c;.exit&#xff09;3.增删改查增CREATE TABLE database_name.…