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

Qt注册类对象单例与单类型区别

1.实现类型SingletonTypeExample

#ifndef SINGLETONTYPEEXAMPLE_H
#define SINGLETONTYPEEXAMPLE_H#include <QObject>class SingletonTypeExample : public QObject
{Q_OBJECT
public://只能显示构造类对象explicit SingletonTypeExample(QObject *parent = nullptr);//属性Q_PROPERTY (int    somePropertyREAD   someProperty           //读取属性值WRITE  setSomeProperty       //设置属性值NOTIFY somePropertyChanged) //属性值变更通知public://析构~SingletonTypeExample(){};//QML前端可直接调用方法Q_INVOKABLE int doSomething() {setSomeProperty(5);return m_someProperty;}//获取属性值int someProperty() const {return m_someProperty;}//设置属性值void setSomeProperty(int val) {m_someProperty = val;//属性值emit somePropertyChanged(val);//发射属性变更信号}signals:void somePropertyChanged(int newValue);//属性变更信号声明private:int m_someProperty;//私有属性值
};#endif // SINGLETONTYPEEXAMPLE_H
#include "singletontypeexample.h"
//构造实现
SingletonTypeExample::SingletonTypeExample(QObject *parent): QObject{parent}, m_someProperty(0) //初始化属性变量
{}

 2.创建类对象静态实例,已为下面注册用

//注册类对象为单类型
static QObject *QObjectSingletonTypeProvider(QQmlEngine *engine, QJSEngine *scriptEngine){Q_UNUSED(engine)Q_UNUSED(scriptEngine)SingletonTypeExample *st = new SingletonTypeExample();//实例化类对象并返回该对象return st;
}

因为注册函数要求包含QQmlEngine *engine, QJSEngine *scriptEngine这两个参数  

 

3.注册单类型 

//注册类对象单类型qmlRegisterSingletonType<SingletonTypeExample>("Qt.jsApi.QObjectSingleton", 1, 0, "MyApi",QObjectSingletonTypeProvider );

4.在QML中使用单类型

上面为注册类对象为单类型使用

下面演示注册类对象为单例使用

1.创建类型MySysInfo

#ifndef MYSYSINFO_H
#define MYSYSINFO_H#include <QObject>
#include <QQuickItem>
#include <QSysInfo>class MySysInfo : public QObject
{Q_OBJECT
public:explicit MySysInfo(QObject *parent = nullptr);//productTypeQ_INVOKABLE QString getSysProductType();//productVersionQ_INVOKABLE QString getSysProductVersion();//currentCpuArchitectureQ_INVOKABLE QString getSysCurrentCpuArchitecture();
signals:};#endif // MYSYSINFO_H

 

#include "mysysinfo.h"MySysInfo::MySysInfo(QObject *parent): QObject{parent}
{}QString MySysInfo::getSysProductType()
{return QString( QSysInfo::productType().toStdString().c_str());
}QString MySysInfo::getSysProductVersion()
{return QSysInfo::productVersion();
}QString MySysInfo::getSysCurrentCpuArchitecture()
{return QSysInfo::currentCpuArchitecture();
}

2.注册MySysInfo为单例

//注册单例MySysInfo *_info = new MySysInfo();qmlRegisterSingletonInstance<MySysInfo>("App.SysInfo",1,0,"SysInfo",_info);

3.在QML中使用单例

上面为注册C++类对象为单类型与单例使用

下面注册JS单例并使用

1.创建JS静态单类型

//首先,定义单类型提供函数(回调).
static QJSValue jsSingleTypeProvider(QQmlEngine *engine, QJSEngine *jsEngine){Q_UNUSED(engine)static int val = 5;QJSValue singleType = jsEngine->newObject();singleType.setProperty("propertyOfSingleType", val++);return singleType;
}

JS注册单类型函数要求提供一个包含QQmlEngine *engine, QJSEngine *jsEngine这两个参数 并返回QJSValue类型的静态对象 

 

 2.注册JS单类型

//其次,注册js单例函数给qml调用qmlRegisterSingletonType("Qt.jsApi", 1, 0, "JsApi", jsSingleTypeProvider);

3.在QML中使用JS注册单类型

4.直接使用Lambda注册JS单类型

//直接使用Lambda表达式注册qmlRegisterSingletonType("Qt.jsApi.Ext", 1, 0, "JsApiExt", [](QQmlEngine *engine, QJSEngine *jsEngine) -> QJSValue {Q_UNUSED(engine)static QString strVal = "HelloWorld";QJSValue obj = jsEngine->newObject();obj.setProperty("propertyOfJsApiWithString", strVal);return obj;});

 5.在QML中使用

相关文章:

Qt注册类对象单例与单类型区别

1.实现类型SingletonTypeExample #ifndef SINGLETONTYPEEXAMPLE_H #define SINGLETONTYPEEXAMPLE_H#include <QObject>class SingletonTypeExample : public QObject {Q_OBJECT public://只能显示构造类对象explicit SingletonTypeExample(QObject *parent nullptr);//…...

Rocky Linux 运维工具yum

一、yum的简介 ​​yum​是用于在基于RPM包管理系统的包管理工具。用户可以通过 ​yum​来搜索、安装、更新和删除软件包&#xff0c;自动处理依赖关系&#xff0c;方便快捷地管理系统上的软件。 二、yum的参数说明 1、install 用于在系统的上安装一个或多个软件包 2、seach 用…...

linux下的ollama

refs: https://github.com/ollama/ollama/blob/main/docs/linux.md 1)安装 curl -fsSL https://ollama.com/install.sh | sh 2)修改服务配置&#xff0c;打开端口允许所有IP地址 refs(https://github.com/ollama/ollama/blob/main/docs/faq.md#where-are-models-stored) C…...

YOLOv9详细解读,改进提升全面分析(附YOLOv9结构图)

&#x1f951; Welcome to Aedream同学 s blog! &#x1f951; 文章目录 1. 概要1.1 模型结构上的改动:1.2 训练脚本上的改动&#xff1a; 2. 介绍2.1 背景2.2 主要贡献 3. 总体框架3.1 可编程梯度信息&#xff08;PGI&#xff09;3.1.1 辅助可逆分支3.1.2 多级辅助信息 3.2 Ge…...

html基础操练和进阶修炼宝典

文章目录 1.超链接标签2.跳锚点3.图片标签4.表格5.表格的方向属性6.子窗口7.音视频标签8.表单9.文件上传10.input属性 html修炼必经之路—各种类型标签详解加展示&#xff0c;关注点赞加收藏&#xff0c;防止迷路哦 1.超链接标签 <!DOCTYPE html> <html lang"en…...

从Mysql 数据库删除重复记录只保留其中一条(删除id最小的一条)

准备工作&#xff1a;新建表tb_coupon /*Navicat Premium Data TransferSource Server : rootlocalhostSource Server Type : MySQLSource Server Version : 50527Source Host : localhost:3306Source Schema : leyouTarget Server Type : My…...

从http到websocket

阅读本文之前&#xff0c;你最好已经做过一些websocket的简单应用 从http到websocket HTTP101HTTP 轮询、长轮询和流化其他技术1. 服务器发送事件2. SPDY3. web实时通信 互联网简史web和httpWebsocket协议1. 简介2. 初始握手3. 计算响应健值4. 消息格式5. WebSocket关闭握手 实…...

UE5 C++ Widget练习 Button 和 ProgressBar创建血条

一. 1.C创建一个继承Widget类的子类&#xff0c; 命名为MyUserWidget 2.加上Button 和 UserWidget的头文件 #include "CoreMinimal.h" #include "Components/Button.h" #include "Blueprint/UserWidget.h" #include "MyUserWidget.genera…...

抖店无货源违规频发,不能入驻?这个是真的吗?

我是电商珠珠 还没有踏入抖店这个电商行业的新手&#xff0c;单从别人的口中&#xff0c;听说了抖店无货源特别容易违规&#xff0c;还会被扣除全部的保证金&#xff0c;得不偿失之类的话。有的还专门劝诫新手不要做抖店&#xff0c;做了就会亏本之类的话&#xff0c;这搞得人…...

HarmonyOS—开发云数据库

您可以在云侧工程下开发云数据库资源&#xff0c;包括创建对象类型、在对象类型中添加数据条目、部署云数据库。 创建对象类型 对象类型&#xff08;即ObjectType&#xff09;用于定义存储对象的集合&#xff0c;不同的对象类型对应的不同数据结构。每创建一个对象类型&#…...

mysql查询某个数据库的数量有多少GB

要查询MySQL数据库中某个数据库&#xff08;或称为“schema”&#xff09;所占用的磁盘空间大小&#xff08;以GB为单位&#xff09;&#xff0c;你可以使用information_schema数据库中的TABLES和DATA_LENGTH、INDEX_LENGTH字段来获取每个表的数据和索引的大小&#xff0c;然后…...

table展示子级踩坑

##elemenui中table通过row中是否有children进行判断是否展示子集&#xff0c;通过设置tree-prop的属性进行设置&#xff0c;子级的children的名字可以根据自己的子级名字进行替换&#xff0c;当然同样可以对数据处理成含有chilren的子级list。 问题&#xff1a; 1.如果是根据后…...

xss过waf的小姿势

今天看大佬的视频学到了几个操作 首先是拆分发可以用self将被过滤的函数进行拆分 如下图我用self将alert拆分成两段依然成功执行 然后学习另一种姿势 <svg id"YWxlcnQoIlhTUyIp"><img src1 οnerrοr"window[eval](atob(document.getElementsByTagNa…...

【六袆 - MySQL】MySQL 5.5及更高版本中,InnoDB是新表的默认存储引擎;

InnoDB 这是一个MySQL组件&#xff0c;结合了高性能和事务处理能力&#xff0c;以确保可靠性、健壮性和并发访问。它体现了ACID设计哲学。它作为一个存储引擎存在&#xff0c;处理使用ENGINEINNODB子句创建的或修改的表。请参阅第14章“InnoDB存储引擎”以获取有关架构细节和管…...

可移植性(兼容性)测试指南

可移植性是指应用程序能够安装到不同的环境中&#xff0c;在不同的环境中使用&#xff0c;甚至可以移动到不同的环境中。当然&#xff0c;前两者对所有系统都很重要。就PC软件而言&#xff0c;鉴于操作系统、共存和互操作应用程序、硬件、带宽可用性等方面的快速变化&#xff0…...

软件更新快讯-Obsidian更新-1.5.8 linux Appimage直装

更新内容 1.5.8&#xff1a; 从具有相同属性的文件导航时&#xff0c;固定属性不会显示。 修复了Home和End在导航文档顶部和底部时不总是起作用的问题。 Fixed properties not appearing when navigating from a file that has the same properties.Fixed Home and End not a…...

Android Gradle开发与应用 (二) : Groovy基础语法

1. Groovy是什么 Groovy是基于JVM虚拟机的一种动态语言&#xff0c;语法和Java非常相似&#xff0c;并能够无缝地与Java代码集成和互操作&#xff0c;增加了很多动态类型和灵活的特性。(闭包、DSL) 语法和Java非常相似这个特点&#xff0c;意味着&#xff0c;如果我们完全不懂…...

iptables学习

iptables的4表5链的处理流程 一&#xff1a;业务地址请求服务时&#xff0c;首先经过iptables服务&#xff0c;iptables通过校验规则&#xff0c;通过校验是否同意业务访问&#xff0c;规则从上到下&#xff0c;匹配规则都失败了的话&#xff0c;走默认规则 &#xff08;1&…...

kafka 集群搭建

kafka集群搭建 1. kafka介绍 Apache Kafka是一个开源的流处理平台&#xff0c;由Scala和Java编写1。它是一个分布式、支持分区的&#xff08;partition&#xff09;、多副本的&#xff08;replica&#xff09;&#xff0c;基于zookeeper协调的分布式消息系统2。Kafka的最大特…...

springboot-基础-eclipse配置+helloword示例

备份笔记。所有代码都是2019年测试通过的&#xff0c;如有问题请自行搜索解决&#xff01; 下一篇&#xff1a;springboot-基础-添加model和controller的简单例子常用注解含义 目录 配置helloword示例新建项目创建文件 配置 spring boot官方有定制版eclipse&#xff0c;也就是…...

华硕ROG XBOX 掌机 X RC73XA 原厂Win11 24H2 系统分享下载

华硕ROG XBOX掌机X RC73XA自带一键恢复功能&#xff0c;即使系统异常或更换硬盘后也能通过原厂工厂文件轻松恢复到出厂设置。支持Windows 11 24H2家庭版系统&#xff0c;用户仅需准备一个容量大于20G的U盘&#xff0c;并按照提供的安装教程操作即可完成恢复过程&#xff0c;确保…...

荷兰独立研究者发现机器通过“聊天“自主发现看不见的物理规律

这项由荷兰阿姆斯特丹独立研究者Tomek Kaszyński完成的研究发表于2026年3月&#xff0c;论文编号为arXiv:2604.03266v1&#xff0c;研究成果令人惊叹地展示了人工智能如何通过"聊天"的方式自主发现那些我们肉眼看不见的物理规律。当我们观看一个球从斜坡上滚下来时&…...

避坑指南:ABAP调用CO_XT_COMPONENT_ADD为工单批量添加组件,这些细节不注意会报错

ABAP工单组件批量维护实战&#xff1a;CO_XT_COMPONENT_ADD深度避坑指南 在SAP生产订单管理系统中&#xff0c;批量维护工单组件是每个ABAP开发者都会遇到的高频需求。当标准BAPI无法满足复杂场景时&#xff0c;CO_XT_COMPONENT_ADD这类底层函数往往成为救命稻草——但稍有不慎…...

AMP Adversarial Motion Priors: Bridging Kinematic and Physics-Based Motion Generation for Robust Cha

1. AMP对抗运动先验&#xff1a;当细腻动作遇上环境适应 第一次看到机器人跳舞视频时&#xff0c;你可能被它流畅的动作惊艳过。但如果你仔细观察&#xff0c;会发现这些机器人在平坦地板上表现完美&#xff0c;一旦遇到不平整的路面就变得笨拙不堪。这正是传统动作生成算法面临…...

同样是功率预测,隔壁场站考核6%,我凭啥10%+?揭秘2026三层数据“炼金术”

关键词&#xff1a; 风电光伏功率预测&#xff0c; 数据治理&#xff0c; 可用功率&#xff0c; 现货市场偏差&#xff0c; 功率预测准确率“同一个风场&#xff0c;同一个气象局&#xff0c;为啥人家的准确率能卷到6%以内&#xff0c;我家直接飙上10%&#xff1f;”这是2026年…...

新手程序员入门必看!网络安全全攻略+免费学习资源 建议收藏

新手程序员入门必看&#xff01;网络安全全攻略免费学习资源 建议收藏 本文全面科普网络安全的定义、运作机制、常见威胁与防护最佳实践&#xff0c;同时整理了适配零基础的网安入门学习路线&#xff0c;还附带免费学习资源分享&#xff0c;帮助小白、转行及应届生快速入门网络…...

2025年的大模型论文的经典性

2025 年最值得优先读的一批&#xff0c;基本集中在三条主线&#xff1a;推理与 agentic 能力、多模态统一建模、以及新一代高难度评测。([arXiv][1]) 一、推理与 Agentic 主线 1. DeepSeek-R1 这是 2025 年最有代表性的“推理模型”论文之一。它的关键点不是单纯把模型做大&…...

A律13折线PCM编码实战:从MATLAB代码到信号恢复全流程解析

A律13折线PCM编码实战&#xff1a;从MATLAB实现到信号保真度优化 在数字通信系统中&#xff0c;脉冲编码调制&#xff08;PCM&#xff09;是将模拟信号转换为数字信号的核心技术。A律13折线作为国际电信联盟&#xff08;ITU-T&#xff09;推荐的标准化非均匀量化方法&#xff0…...

不止于最短路径:Dijkstra那些被写进教科书却鲜为人知的概念(Stack、Semaphore、Deadlock)

不止于最短路径&#xff1a;Dijkstra那些被写进教科书却鲜为人知的概念 在计算机科学的璀璨星河中&#xff0c;Edsger W. Dijkstra的名字往往与"最短路径算法"紧密相连。然而&#xff0c;这位荷兰计算机科学家的贡献远不止于此——他像一位隐形的建筑师&#xff0c;悄…...

电机控制:PWM 原理与应用

电机控制&#xff1a;PWM原理与应用 在现代工业自动化和智能设备中&#xff0c;电机控制技术扮演着至关重要的角色。其中&#xff0c;脉宽调制&#xff08;PWM&#xff09;技术因其高效、灵活的特点&#xff0c;成为电机控制的核心手段之一。无论是家用电器中的风扇调速&#…...