网站里面如何做下载的app/竞价代运营公司哪家好

网站里面如何做下载的app,竞价代运营公司哪家好,中山网站推广服务,电商企业门户网站建设方案某些 Qt API 要求你从抽象基类中重写某些方法,例如 QAbstractItemModel。 为了支持直接从 Rust 中创建这样的子类,CXX-Qt 提供了多种辅助工具。 某些基类可能需要特殊的构造参数。这可以通过使用自定义构造函数来实现。 访问基类方法 要在 Rust 中访…

某些 Qt API 要求你从抽象基类中重写某些方法,例如 QAbstractItemModel。

为了支持直接从 Rust 中创建这样的子类,CXX-Qt 提供了多种辅助工具。

某些基类可能需要特殊的构造参数。这可以通过使用自定义构造函数来实现。

访问基类方法

要在 Rust 中访问基类的方法,请使用 #[inherit] 宏。它可以放在 #[cxx_qt::bridge] 中的 extern “RustQt” 块中的函数前面。

extern "RustQt" {#[qobject]#[base = "QAbstractListModel"]#[qml_element]#[qproperty(State, state)]type CustomBaseClass = super::CustomBaseClassRust;
}// 为基类(QAbstractItemModel)的 C++ 函数创建 Rust 绑定
extern "RustQt" {/// 从基类继承的 beginInsertRows 方法#[inherit]#[cxx_name = "beginInsertRows"]unsafe fn begin_insert_rows(self: Pin<&mut CustomBaseClass>,parent: &QModelIndex,first: i32,last: i32,);/// 从基类继承的 endInsertRows 方法#[inherit]#[cxx_name = "endInsertRows"]unsafe fn end_insert_rows(self: Pin<&mut CustomBaseClass>);/// 从基类继承的 beginRemoveRows 方法#[inherit]#[cxx_name = "beginRemoveRows"]unsafe fn begin_remove_rows(self: Pin<&mut CustomBaseClass>,parent: &QModelIndex,first: i32,last: i32,);/// 从基类继承的 endRemoveRows 方法#[inherit]#[cxx_name = "endRemoveRows"]unsafe fn end_remove_rows(self: Pin<&mut CustomBaseClass>);/// 从基类继承的 beginResetModel 方法#[inherit]#[cxx_name = "beginResetModel"]unsafe fn begin_reset_model(self: Pin<&mut CustomBaseClass>);/// 从基类继承的 endResetModel 方法#[inherit]#[cxx_name = "endResetModel"]unsafe fn end_reset_model(self: Pin<&mut CustomBaseClass>);
}unsafe extern "RustQt" {/// 清除 QAbstractListModel 中的行#[qinvokable]pub fn clear(self: Pin<&mut CustomBaseClass>);
}impl qobject::CustomBaseClass {/// 清除 QAbstractListModel 中的行pub fn clear(mut self: Pin<&mut Self>) {unsafe {self.as_mut().begin_reset_model();self.as_mut().rust_mut().id = 0;self.as_mut().rust_mut().vector.clear();self.as_mut().end_reset_model();}}
}

完整示例

这段代码实现了一个 QAbstractListModel 子类。为此,Rust 中实现的 clear 方法需要调用基类中的 beginResetModel 及相关方法,这些方法通过使用 #[inherit] 来访问。有关特定子类化要求的更多详细信息,请参阅 Qt 文档。

类似于 CXX,extern “RustQt” 块中的方法可以使用 #[inherit] 属性标记,并且对可使用的类型有相同的限制。此外,self 类型必须是 self: Pin<&mut qobject::T> 或 self: &qobject::T,其中 qobject::T 必须引用在 #[cxx_qt::bridge] 中用 #[qobject] 标记的 QObject。

如果 Rust 名称应与 C++ 方法名称不同(例如,由于 snake_case 与 camelCase 的差异),请使用 #[cxx_name = “myFunctionName”] 或 #[rust_name = “my_function_name”] 属性。

#[inherit]` 也可以用于 `extern RustQt` 块中存在于基类上的信号。

重写基类方法

CXX-Qt 允许生成具有实现继承所需的 C++ 修饰符的可调用方法。这样,方法可以被重写、声明为 virtual 或 final。

C++ 关键字 CXX-Qt 属性
override #[cxx_override]
virtual #[cxx_virtual]
final #[cxx_final]
以下示例重写了从 QAbstractListModel 继承的 data 方法。

extern "RustQt" {#[qobject]#[base = "QAbstractListModel"]#[qml_element]#[qproperty(State, state)]type CustomBaseClass = super::CustomBaseClassRust;
}unsafe extern "RustQt" {#[qinvokable]#[cxx_override]fn data(self: &CustomBaseClass, index: &QModelIndex, role: i32) -> QVariant;
}impl qobject::CustomBaseClass {/// 检索给定索引和角色的数据pub fn data(&self, index: &QModelIndex, role: i32) -> QVariant {let role = qobject::Roles { repr: role };if let Some((id, value)) = self.vector.get(index.row() as usize) {return match role {qobject::Roles::Id => QVariant::from(id),qobject::Roles::Value => QVariant::from(value),_ => QVariant::default(),};}QVariant::default()}
}

完整示例

当使用 cxx_override 重写方法时,可以通过结合使用 #[inherit] 和 #[cxx_name] 属性来访问基类版本的方法。在这种情况下,基类版本的函数必须使用不同的名称,因为 Rust 不能在一个类型上拥有两个同名函数。

示例:

extern "RustQt" {#[qobject]#[base = "QAbstractListModel"]#[qml_element]#[qproperty(State, state)]type CustomBaseClass = super::CustomBaseClassRust;
}unsafe extern "RustQt" {/// 从基类继承的 canFetchMore 方法#[cxx_name = "canFetchMore"]#[inherit]fn base_can_fetch_more(self: &CustomBaseClass, parent: &QModelIndex) -> bool;/// 从基类继承的 index 方法#[inherit]fn index(self: &CustomBaseClass,row: i32,column: i32,parent: &QModelIndex,) -> QModelIndex;
}unsafe extern "RustQt" {/// 返回基类是否可以获取更多数据// 示例:重写 C++ 虚方法并调用基类实现。#[qinvokable]#[cxx_override]#[cxx_name = "canFetchMore"]fn can_fetch_more(self: &CustomBaseClass, parent: &QModelIndex) -> bool;
}impl qobject::CustomBaseClass {/// 返回基类是否可以获取更多数据// 示例:重写 C++ 虚方法并调用基类实现。pub fn can_fetch_more(&self, parent: &QModelIndex) -> bool {self.base_can_fetch_more(parent)}
}

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

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

相关文章

磁盘清理工具-TreeSize Free介绍

TreeSizeFree是一个磁盘空间管理工具&#xff0c;主要用于分析磁盘使用情况&#xff0c;帮助用户找到占用空间大的文件和文件夹: 特点&#xff1a;按大小排序&#xff1a;快速找到占用空间最大的文件或文件夹 一般可以删除: 扫描 C:\Users\XXX\AppData\Local\Temp 或 C:\Window…

OpenCV中距离公式

一、各类距离公式总结 常见距离公式 欧氏距离&#xff1a; 曼哈顿距离&#xff08;L1&#xff09;‌&#xff1a; 切比雪夫距离&#xff08;Chessboard&#xff09;‌&#xff1a; 1、点与点距离(欧氏距离) ‌二维空间‌ 设两点坐标为 P1(x1,y1)、P2(x2,y2)&#xff0c;其距离…

Vue.js 模板语法全解析:从基础到实战应用

引言 在 Vue.js 的开发体系中&#xff0c;模板语法是构建用户界面的核心要素&#xff0c;它让开发者能够高效地将数据与 DOM 进行绑定&#xff0c;实现动态交互效果。通过对《Vue.js 快速入门实战》中关于 Vue 项目部署章节&#xff08;实际围绕 Vue 模板语法展开&#xff09;…

论文笔记(七十三)Gemini Robotics: Bringing AI into the Physical World

Gemini Robotics: Bringing AI into the Physical World 文章概括1. 引言2. Gemini 2.0的具身推理2.1. 具身推理问答&#xff08;ERQA&#xff09;基准测试2.2. Gemini 2.0的具身推理能力2.3. Gemini 2.0支持零样本和少样本机器人控制 3. 使用 Gemini Robotics 执行机器人动作3…

centos7搭建postgresql12主从

主从搭建 192.168.159.101 node1 主库&#xff08;读写&#xff09; 192.168.159.102 node2 备库&#xff08;只读&#xff09; 两台机器首先安装postgrsql 主库 postgres用户操作&#xff1a; 修改postgresql.conf # 在文件中修改(此配置仅用于远程访问, 流复制后续还有额外…

996引擎-接口测试:背包

996引擎-接口测试:背包 背包测试NPC参考资料背包测试NPC CONSTANT = require("Envir/QuestDiary/constant/CONSTANT.lua"); MsgUtil = require("Envir/QuestDiary/utils/996/MsgUtil.lua");

vulnhub靶场之【hack-me-please靶机】

前言 靶机&#xff1a;billu_b0x2靶机&#xff0c;IP地址为192.168.10.8 攻击&#xff1a;kali&#xff0c;IP地址为192.168.10.6 靶机和攻击机都采用VMware虚拟机&#xff0c;都采用桥接网卡模式 文章涉及的靶机及工具&#xff0c;都可以自行访问官网或者项目地址进行获取&…

机器学习——KNN模型评价

一、主要函数 sklearn.metrics.accuracy_score() 是 scikit-learn 中用于计算分类模型准确率的函数&#xff0c;适用于评估分类任务的整体性能。 1、核心功能 作用&#xff1a;计算模型预测的准确率&#xff0c;即正确分类的样本数占总样本数的比例。公式&#xff1a;Accurac…

美国国家数据浮标中心(NDBC)

No.大剑师精品GIS教程推荐0地图渲染基础- 【WebGL 教程】 - 【Canvas 教程】 - 【SVG 教程】 1Openlayers 【入门教程】 - 【源代码示例 300】 2Leaflet 【入门教程】 - 【源代码图文示例 150】 3MapboxGL【入门教程】 - 【源代码图文示例150】 4Cesium 【入门教程】…

Qt调用Miniconda的python方法

1、 Win 64环境下载及安装 Miniconda 首先下载Windows 版Miniconda&#xff0c;https://docs.conda.io/en/latest/miniconda.html或 https://repo.anaconda.com/miniconda/ 安装界面及选择如下图所示&#xff1a; 安装完python3.12版报错如下。 说明&#xff1a;python3.11版…

汽车免拆诊断案例 | 2024 款路虎发现运动版车无法正常识别智能钥匙

故障现象  一辆2024款路虎发现运动版车&#xff0c;搭载2.0 L发动机&#xff0c;累计行驶里程约为5 000 km。车主反映&#xff0c;使用遥控器无法解锁车门&#xff0c;随后使用机械钥匙打开车门&#xff0c;踩下制动踏板&#xff0c;按压起动按钮&#xff0c;仪表盘提示“将智…

跟着StatQuest学知识06-CNN进行图像分类

目录 一、CNN特点 二、CNN应用于图像分类 &#xff08;一&#xff09;使用过滤器 &#xff08;二&#xff09;通过ReLU激活函数 &#xff08;三&#xff09;应用新的滤波器&#xff08;池化&#xff09; &#xff08;四&#xff09;输入 &#xff08;五&#xff09;输出…

OpenHarmony 开源鸿蒙北向开发——linux使用make交叉编译第三方库

这几天搞鸿蒙&#xff0c;需要编译一些第三方库到鸿蒙系统使用。 头疼死了&#xff0c;搞了一个多星期总算搞定了。 开贴记坑。 一、SDK下载 1.下载 在linux下使用命令 wget https://cidownload.openharmony.cn/version/Master_Version/OpenHarmony_5.1.0.54/20250313_02…

Java 大视界 -- Java 大数据中的数据隐私保护技术在多方数据协作中的应用(147)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

编程考古-安德斯·海尔斯伯格(Anders Hejlsberg)回答离开Borland的原因

安德斯海尔斯伯格&#xff08;Anders Hejlsberg&#xff09;是著名的编程语言和工具开发者&#xff0c;曾主导开发了 Turbo Pascal、Delphi&#xff08;Borland 时期&#xff09;&#xff0c;以及加入微软后参与的 C# 和 TypeScript。关于他离开 Borland 的原因&#xff0c;可以…

西门子仿真实例位置

C:\Users\san\Documents\Siemens\Simatic\Simulation\Runtime\Persistence S7-PLCSIM Advanced V3.0 可以打开文件&#xff0c;删除重建

Bellman_ford 算法——解决负权边最短路径问题

卡码网:94. 城市间货物运输 I 94. 城市间货物运输 I 题目描述 某国为促进城市间经济交流,决定对货物运输提供补贴。共有 n 个编号为 1 到 n 的城市,通过道路网络连接,网络中的道路仅允许从某个城市单向通行到另一个城市,不能反向通行。 网络中的道路都有各自的运输成本…

mysql——第二课

学生表 CREATE TABLE student (id int(11) NOT NULL AUTO_INCREMENT,name varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,sex varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,age int(11) DEFAULT NULL,c_id int(10) DEFAULT NULL,PRIMARY KEY (id),KEY c_id (c_id),CONSTR…

图解 ThreadLocal

在 Java 多线程编程的世界里&#xff0c;ThreadLocal 是一个非常实用的工具&#xff0c;它为每个线程提供了独立的变量副本&#xff0c;避免了多线程环境下的变量共享问题。今天&#xff0c;我们就从内存视角出发&#xff0c;通过一张图来深入理解 ThreadLocal 的工作原理&…

Sql Server 索引性能优化 分析以及分表

定位需优化语句 根据工具 skywking 或者开启慢查询日志 找到 慢sql 的语句根据 执行过程 来 判断 慢的原因 row filter 指标 看查了多少数据 比例多少 type 看下是单表 还是 join联表 比如 执行步骤多 没索引 优化方向 减少执行次数索引 没索引考虑加索引 加索引 尽量选择 i…