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

QQuick-自绘

QQuick提供了丰富的控件,搭配qml很容易就可以搭配出一套丝滑的UI界面。但是在有些场景下无论是出于效率还是现有控件的局限都需要进行自绘才能实现自身的需求。QQuick支持多种自绘:

可以使用的方案:

1. 继承QQuickPaintedItem ,重写 paint 函数

优点: 这个是最容易实现的方式,也非常贴合QWidget那一套方案,QPainter自绘的接口也是一样的,无学习成本。底层会根据操作转换为对应的OpenGL渲染。即不需要学习OpenGL的api也能享受到OpenGL用GPU渲染的好处

代价: renderTarget==QQuickPaintedItem::Image 在这个模式下,会有一层纹理数据的copy,性能上会有损失

2. 继承QQuickFrameBufferObject,重写 createRenderer 函数

createRenderer函数需要返回一个QQuickFramebufferObject::Renderer对象,自绘操作是在QQuickFramebufferObject::Renderer::render操作中进行的,这里面可以用OpenGL进行绘制操作

优点: 性能好,直接用OpenGL绘制,省去了纹理的copy操作

代价: 需要学习OpenGL相关知识

3. 继承QQuickItem,重写 updatePaintNode 

这种方法更直接,因为QQuick所有的可视元素都是继承QQuickItem,渲染的根本就是每一次update时调用每一个可视QQuickItem的updatePaintNode收集要渲染的内容,上面两种方式其实就是QQuick框架在内部定义好了 updatePaintNode 逻辑

优点: 性能好,省去了中间的其他转换逻辑,内部可以根据当前框架所使用的渲染方式(OpenGL、D3D\Metal(MAC)\Soft),来决定使用哪一套绘制方案。

代价: 需要学习更多关于本地绘制的api使用方法(OpenGL/D3D/Metal/Soft)

ps:指定QQuick使用那一套渲染框架: enum GraphicsApi {Unknown,Software,OpenGL,Direct3D12,OpenVG,OpenGLRhi,Direct3D11Rhi,VulkanRhi,MetalRhi,NullRhi,};QQuickWindow::setSceneGraphBackend(QSGRendererInterface::Software);

4. 连接QQuickWindow::beforeRendering/afterRendering,信号进行底层或者上层绘制,可以使用本地api(OpenGL/D3D/Metal/Soft)这些接口进行绘制,但是操作繁琐。

相关文章:

QQuick-自绘

QQuick提供了丰富的控件,搭配qml很容易就可以搭配出一套丝滑的UI界面。但是在有些场景下无论是出于效率还是现有控件的局限都需要进行自绘才能实现自身的需求。QQuick支持多种自绘: 可以使用的方案: 1. 继承QQuickPaintedItem ,重写 paint …...

【算法】【算法杂谈】已知[1,m]的等概率函数,求[1,n]的等概率函数

目录 前言问题介绍解决方案代码编写java语言版本c语言版本c语言版本 思考感悟写在最后 前言 当前所有算法都使用测试用例运行过,但是不保证100%的测试用例,如果存在问题务必联系批评指正~ 在此感谢左大神让我对算法有了新的感悟认识! 问题介…...

【Python】Python中的列表,元组,字典

文章目录 列表创建列表获取元素修改元素添加元素查找元素删除元素列表拼接遍历列表切片操作 元组创建元组元组中的操作 字典创建字典添加/修改元素删除元素查找字典的遍历合法的key类型 列表 列表是一种批量保存数据的方式,列表使用[]表示 创建列表 创建两个空列…...

分布式系统概念和设计-分布式对象和远程调用

分布式系统概念和设计 分布式对象和远程调用 能够接收远程方法调用的对象称为远程对象,远程对象实现一个远程接口。 调用者和被调用对象分别存在不同的失败可能性,RMI和本地调用有不同的语义。 中间件 在进程和消息传递等基本构造模块之上提供编程模型的…...

11-FastDFS

一 为什么要使用分布式文件系统 单机时代 初创时期由于时间紧迫,在各种资源有限的情况下,通常就直接在项目目录下建立静态文件夹,用于用户存放项目中的文件资源。如果按不同类型再细分,可以在项目目录下再建立不同的子目录来区分…...

Word这样用,提高效率不加班

Word这样用,提高效率不加班 今天给大家分享23条Word文档的应用小技巧。对于大家来说,掌握些技巧能够效率百倍,何乐不为? 这些技巧是本人通过整理一直在用并且使用频率较高的,也希望能帮到大家。有兴趣的小伙伴可以自己…...

【Linux】调试器---gdb的使用

文章目录 一.背景知识二.安装gdb三.gdb的用法使用须知gdb的常用指令1.进入调试2.退出调试操作3.显示源代码4.设置断点breakPoint5.查看断点信息/禁用断点/开启断点/删除断点6.运行程序,开始调试run7.查看变量8.其它重要命令 一.背景知识 程序的发布方式有两种&…...

MySQL数据库之表的增删改查(进阶)

目录 1. 数据库约束1.1 约束类型1.2 NULL约束1.3 UNIQUE:唯一约束1.4 DEFAULT:默认值约束1.5 PRIMARY KEY:主键约束1.6 FOREIGN KEY:外键约束1.7 CHECK约束 2 表之间的关系2.1 一对一2.2 一对多2.3 多对多 3 新增4 查询4.1 聚合查…...

Nginx从开始到结束,简单到小白都能懂哦

绪论 大家好,很高兴能够为大家带来这篇关于Nginx配置的新手指南。在这篇博客中,我们将通过简单明了的图文教程,帮助大家快速上手Nginx配置,解锁Nginx的各种神奇功能! 一、Nginx简介 Nginx是一款功能强大的web服务器…...

Qt——Qt控件之按钮-QDialogButtonBox对话框按钮盒子控件的使用总结(例程:自定义按钮)

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C++语言开发基础总结》 《从0到1学习嵌入式Linux开发》 《QT开发实战》 《Android开发实战》...

数据库学习-常用的SQL语句

背景: 汇整一下自己学习数据库过程中常见的题目及语句。 一.实例分析题 二.简单SQL查询: 1):统计每个部门员工的数目select dept,count(*) from employee group by dept;2):统计每个部门员工的数目大于一个的记录se…...

5种获取JavaScript时间戳函数的方法

5种获取JavaScript时间戳函数的方法 一、JavasCRIPT时间转时间戳方法一:Date.now()方法二:Date.parse()方法三:valueOf()方法四:getTime()方法五:Number 二、js时间戳转时间方法一:生成2022/1/18 上午10:09…...

图的宽度优先遍历

文章目录 图的宽度优先遍历程序设计程序分析图的宽度优先遍历 【问题描述】根据输入图的邻接矩阵A,给出图的宽度优先遍历序列; 【输入形式】第一行为图的结点个数n,第二行输入顶点的信息,每个顶点用一个字符表示,接下来的n行为图的邻接矩阵A。其中A[i][j]=1表示两个结点邻…...

企业AD域(域控服务器)的安装和配置详细教程

一、环境以及工具准备 软件:VMWare Workstation 2016 ( 下载链接:https://pan.baidu.com/s/1iX1VRilerYPGbGvX4pvaKw 提取码:75R6 ) 镜像:Windows Server 2016 ( 下载地址&#xff…...

面试官:一千万的数据,你是怎么查询的?

面试官:一千万的数据,你是怎么查询的? 1 先给结论 对于1千万的数据查询,主要关注分页查询过程中的性能 针对偏移量大导致查询速度慢: 先对查询的字段创建唯一索引 根据业务需求,先定位查询范围&#xff08…...

IntelliJ 上 Azure Event Hubs 全新支持来了!

大家好,欢迎来到 Java on Azure Tooling 的3月更新。在这次更新中,我们将介绍 Azure Event Hubs 支持、Azure Functions 的模板增强,以及在 IntelliJ IDEA 中部署 Azure Spring Apps 时的日志流改进。要使用这些新功能,请下载并安…...

性能测试,监控磁盘读写iostat

性能测试,监控磁盘读写iostat iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出 CPU使用情况。同vmstat一样,ios…...

steam游戏搬砖项目怎么做?月入过万的steam搬砖项目教程拆解

steam游戏搬砖项目怎么做?月入过万的steam搬砖项目教程拆解 大家好,我是童话姐姐,今天继续来聊Steam搬砖项目。 Steam搬砖项目也叫CSGO搬砖项目,它并不是什么刚面世的新项目,是已经存在至少七八年的一个资深老牌项目。这个项目…...

协同运力、算力、存力,加速迈向智能世界

2023年4月20日,华为在HAS2023期间举办“迈向智能世界”主题论坛,吸引了来自全球的分析师、专家学者及媒体与会。会上,华为ICT战略与Marketing总裁彭松发表了“持续技术创新,加速迈向智能世界”的主题演讲。 华为ICT战略与Marketin…...

被裁员了,要求公司足额补缴全部公积金,一次补了二十多万!网友兴奋了,该怎么操作?...

被裁员后,能要求公司补缴公积金吗? 一位网友问: 被裁员了,要求公司把历史公积金全部足额缴纳,现在月薪2.3万,但公司每个月只给自己缴纳300元公积金,结果一次补了二十多万,一次性取出…...

Element UI表格样式改造避坑指南:透明化后文字看不清、边框错位怎么办?

Element UI表格透明化实战:解决文字模糊与样式错位的专业方案 当我们在Vue项目中采用Element UI的el-table组件实现透明化效果时,经常会遇到一些棘手的样式问题。本文将深入分析四个典型场景的成因,并提供经过实战检验的解决方案。 1. 透明背…...

Easypoi导出Excel时,如何优雅地处理‘未知’或‘空值’?一个replace动态替换的实战技巧

Easypoi动态替换Excel导出中的未知值与空值:实战技巧与最佳实践 在数据导出场景中,我们经常遇到数据库枚举值与Excel展示不匹配的问题。比如性别字段,除了标准的"男"、"女"外,还可能存在空值或超出预设范围的…...

告别手动操作!Open-AutoGLM让iPhone听懂人话,自动执行指令

告别手动操作!Open-AutoGLM让iPhone听懂人话,自动执行指令 1. 引言 你是否厌倦了每天重复点击手机屏幕的操作?是否希望手机能像真人助理一样理解你的需求并自动完成任务?今天我要介绍的Open-AutoGLM正是这样一个革命性的AI手机智…...

Word转HTML图片处理全攻略:Base64 vs 文件存储的实战对比

Word转HTML图片处理全攻略:Base64 vs 文件存储的实战对比 在文档处理领域,Word转HTML的需求日益增长,尤其是需要将文档内容嵌入网页或富文本编辑器时。图片作为文档的重要组成部分,其处理方式直接影响转换效果和系统性能。本文将深…...

在GCP上运行autoresearch

Andrej Karpathy最近开源了autoresearch,这是一个将真实LLM训练环境交给AI代理并让它自主实验的项目。代理修改模型代码,训练恰好5分钟,检查验证损失是否改善,保留或丢弃更改,然后重复。你去睡觉;醒来时会看…...

Java微服务集成TranslateGemma:企业级翻译中台构建

Java微服务集成TranslateGemma:企业级翻译中台构建 1. 为什么需要企业级翻译中台 最近在给一家跨境电商平台做技术咨询时,客户提到一个很实际的问题:他们的客服系统、商品管理系统、营销内容平台各自维护着不同的翻译逻辑。客服用的是第三方…...

163MusicLyrics:开源高效歌词获取与管理解决方案

163MusicLyrics:开源高效歌词获取与管理解决方案 【免费下载链接】163MusicLyrics Windows 云音乐歌词获取【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 在数字音乐时代,歌词已成为音乐体验不可或缺的一…...

Open UI5 源代码解析之740:SearchManager.js

源代码仓库: https://github.com/SAP/openui5 源代码位置:src\sap.f\src\sap\f\SearchManager.js SearchManager.js 深度解析:在 openUI5 中的职责、机制与落地价值 文件定位与总体判断 这个文件定义了一个名为 sap.f.SearchManager 的类。它位于 sap.f 库路径下,却明…...

Analog离线引擎:从原理到实践的抗断网解决方案

Analog离线引擎:从原理到实践的抗断网解决方案 【免费下载链接】analog Meet the calendar that changes everything 项目地址: https://gitcode.com/gh_mirrors/analog4/analog 在数字化办公环境中,日程管理工具的网络依赖性常常成为效率瓶颈。远…...

**NPU设计新范式:基于RISC-V的可配置计算单元实现与性能优化实践**在人工智能加速领域,

NPU设计新范式:基于RISC-V的可配置计算单元实现与性能优化实践 在人工智能加速领域,NPU(神经网络处理单元) 正从专用硬件向灵活可编程架构演进。本文将深入探讨一种基于 RISC-V指令集扩展 的轻量级NPU设计方案,并通过实…...