【RK3588嵌入式图形编程】-SDL2-构建模块化UI
构建模块化UI
文章目录
- 构建模块化UI
- 1、概述
- 2、创建UI管理器
- 3、嵌套组件
- 4、继承
- 5、多态子组件
- 6、总结
在本文中,将介绍如何使用C++和SDL创建一个灵活且可扩展的UI系统,重点关注组件层次结构和多态性。
1、概述
在前面的文章中,我们介绍了应用程序循环和事件循环,这为我们的程序奠定了基础。随着程序和交互的复杂性增加,我们需要在这个基础上构建额外的系统来帮助管理复杂性。
在本文中,我们将深入研究通过实现模块化UI系统来管理复杂的用户界面。我们将涵盖以下关键主题:
- 创建一个UI管理器来处理事件和渲染
- 实现嵌套组件以更好地组织
- 利用继承创建可重复使用的UI元素
- 使用多态性进行灵活的组件管理
通过本课的学习,您将为构建可扩展和维护性好的UI系统打下坚实的基础。
2、创建UI管理器
我们将从创建一个UI管理器开始,它有两个方法将被我们的应用程序循环调用。
事件将被传递给HandleEvent()方法,使我们的UI能够看到流经我们应用程序的事件,并有机会对它们做出反应。
应用程序循环将在适当的时间调用Render(),传递UI应该渲染到的SDL_Surface。
// UI.h
#pragma once
相关文章:
【RK3588嵌入式图形编程】-SDL2-构建模块化UI
构建模块化UI 文章目录 构建模块化UI1、概述2、创建UI管理器3、嵌套组件4、继承5、多态子组件6、总结在本文中,将介绍如何使用C++和SDL创建一个灵活且可扩展的UI系统,重点关注组件层次结构和多态性。 1、概述 在前面的文章中,我们介绍了应用程序循环和事件循环,这为我们的…...
面向机器学习的Java库与平台简介、适用场景、官方网站、社区网址
Java机器学习的库与平台 最近听到有的人说要做机器学习就一定要学Python,我想他们掌握的知道还不够系统全面。本文作者给大家介绍几种常用Java实现的机器学习库,快快收藏加关注吧~ Java机器学习库表格 Java机器学习库整理库/平台概念适合场…...
基于YOLO11深度学习的心脏超声图像间隔壁检测分割与分析系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分割、人工智能
《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...
ubuntu24基于虚拟机无法从主机拖拽文件夹
以下是解决问题的精简步骤: 安装 open-vm-tools-desktop: bash复制 sudo apt-get install open-vm-tools-desktop 重启虚拟机后,文字复制粘贴功能可正常工作。 禁用 Wayland: 编辑 /etc/gdm3/custom.conf 文件: bash复…...
常用Webpack Loader汇总介绍
引言 在前端项目开发中,Webpack 作为强大的模块打包工具,能够将各种资源进行打包处理。而其中的 Loader 则是 Webpack 处理不同类型文件的关键,它允许 Webpack 不仅仅局限于处理 JavaScript 文件,还能处理 CSS、图片、字体等多种…...
剑指 Offer II 023. 两个链表的第一个重合节点
comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20023.%20%E4%B8%A4%E4%B8%AA%E9%93%BE%E8%A1%A8%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E9%87%8D%E5%90%88%E8%8A%82%E7%82%B9/README.md 剑指 Offer II 023. 两…...
个人搭建CDN加速服务 特网科技
在互联网快速发展的今天,网站的加载速度对用户体验有着至关重要的影响,传统的网页加载方式依赖于服务器的性能和网络环境,这使得某些网站的页面加载时间过长,用户体验不佳,为了解决这个问题,许多企业开始采…...
用deepseek学大模型08-卷积神经网络(CNN)
yuanbao.tencent.com 从入门到精通卷积神经网络(CNN),着重介绍的目标函数,损失函数,梯度下降 标量和矩阵形式的数学推导,pytorch真实能跑的代码案例以及模型,数据,预测结果的可视化展示, 模型应用场景和优缺点…...
蓝桥杯单片机基础部分——6、555定时器
前言 NE555是一个纯硬件的设计,旦硬件电路确定了,其功能也确定了,没有可编程的部分,也没什么好去理解的地方,如果理解不了就直接背代码,这里也不是很常考,大家了解一下就可以了,知道…...
Python学习心得函数
一、函数的定义及调用 1.函数的定义: 函数的定义:函数是将一段能实现某种特定功能的代码,使用函数名进行封装,并通过函数名称进行调用。从而达到一次编写,多次调用的目的。 2.函数类型分为两类: &#…...
神经网络实验——MLP
目录 1 目的 2 方法 3 源代码 4 结果 1 目的 ①熟悉 Python 的输入输出流; ②学会使用 matplotlib进行图像可视化; ③掌握神经网络的基本原理,学会使用 sklearn 库中的 MLPClassifier 函数构建基础的多层感知机神经网络分类器; ④学会使用网格查找进行超参数优…...
配置Api自动生成
我的飞书:https://rvg7rs2jk1g.feishu.cn/docx/TVlJdMgYLoDJrsxAwMgcCE14nxt 使用Springfox Swagger生成API,并导入Postman,完成API单元测试 Swagger: 是一套API定义的规范,按照这套规范的要求去定义接口及接口相关信息,再通过可…...
dify-AI 私有部署可修改前端页面
dify文档 官方文档:欢迎使用 Dify | Dify 源码:https://github.com/langgenius/dify.git 安装docker 官网:https://www.docker.com/ 部署服务到docker cd dify cd docker cp .env.example .env docker compose up -d查看效果 http://localh…...
使用 @Results 注解来手动指定字段映射
在 MyBatis 中,Results 注解用于手动指定查询结果的字段映射,尤其当数据库列名与 Java 对象的字段名不一致时。你可以通过 Results 和 Result 注解来精确控制每一列与类属性之间的映射关系。 示例:使用 Results 注解来手动指定字段映射 假设你…...
数据治理中 大数据处理一般都遵循哪些原则
在数据治理中,大数据处理通常遵循以下原则: 最小化原则:企业应只收集实现特定目的所需的数据,避免数据冗余和安全风险。 合法性原则:企业必须遵守相关法律法规,确保数据处理符合法律要求,降低法…...
从0到1:STM32温控系统开发踩坑指南
1. 设计目标 核心功能:实现0-100℃范围内的温度闭环控制 性能指标: 测量精度:0.5℃(使用DS18B20传感器) 控制响应时间:<5秒 显示分辨率:0.1℃ 扩展功能: LCD实时显示当前温度…...
修改时无条件,可以自定义id条件(通过查询)
在这段代码中,$(row).attr(data-rarity, data.rarity); 的作用是给表格的每一行 (row) 添加一个 data-rarity 的自定义属性,属性的值是该行数据中的 rarity 字段。 解释: 1.row 是当前行的 DOM 元素。 2.data.rarity 是从 data 对象中获取的…...
工业制造能耗管理新突破,漫途MTIC-ECM平台助力企业绿色转型!
在工业制造领域,能源消耗一直是企业运营成本的重要组成部分。随着“双碳”目标的推进,如何实现高效能耗管理,成为制造企业亟待解决的问题。漫途MTIC-ECM能源能耗在线监测平台,结合其自研的硬件产品,为工业制造企业提供…...
实现一个简单的协同过滤推荐算法
题目描述: 协同过滤是推荐系统中的一种常用技术,其基本思想是利用用户之间的相似性或物品之间的相似性来进行推荐。本次面试题要求实现一个基于用户的协同过滤推荐算法。 具体要求: 定义两个类:User 和 Item,分别表示用…...
eNSP防火墙综合实验
一、实验拓扑 二、ip和安全区域配置 1、防火墙ip和安全区域配置 新建两个安全区域 ip配置 Client1 Client2 电信DNS 百度web-1 联通DNS 百度web-2 R2 R1 三、DNS透明代理相关配置 1、导入运营商地址库 2、新建链路接口 3、配置真实DNS服务器 4、创建虚拟DNS服务器 5、配置D…...
Python和Java默认排序算法TimSort,为什么比快排还快?手把手带你拆解源码
Python与Java为何选择TimSort:从理论优势到工程实践的全景解析 当你在Python中调用sorted()或在Java中使用Arrays.sort()时,背后运行的并非教科书上的经典算法,而是一个融合了多种策略的混合型排序算法——TimSort。这个由Tim Peters在2001年…...
紧急更新|OpenAI新发布的Red-Teaming基准已失效?用R重写统计验证协议,守住你的模型上线红线
更多请点击: https://intelliparadigm.com 第一章:R语言在大语言模型偏见检测中的统计方法导论 在大语言模型(LLM)部署日益广泛的背景下,系统性偏见可能通过训练数据、词嵌入或生成逻辑被隐式放大。R语言凭借其强大的…...
输入法词库转换:如何打破不同输入法间的数据壁垒
输入法词库转换:如何打破不同输入法间的数据壁垒 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 你是否曾经因为更换输入法而不得不放弃多年积累的个人词…...
Hitboxer终极指南:如何彻底解决游戏键盘输入冲突问题
Hitboxer终极指南:如何彻底解决游戏键盘输入冲突问题 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 在竞技游戏的激烈对抗中,你是否曾因键盘输入冲突而错失关键操作?当同时按…...
全国首部“数据流通交易合规”标准,现公开征集起草单位和专家!
2026年,是国家数据局明确的“数据要素价值释放年”,也是“数据要素”三年行动计划的收官之年。在政策强力驱动下,数据资产价值释放进程全面提速,一个千亿级规模的市场正迎来关键跃升。然而,面对这片广阔蓝海࿰…...
机器学习消防水力系统故障诊断应用【附代码】
✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,查看文章底部二维码(1)Simscape机电液耦合仿真平台与故障注入方法&#x…...
后缀列表、字母组合列表、辅音连缀列表
前一篇文章介绍了音节划分规则(https://blog.csdn.net/lanhuazui10/article/details/160630574?sharetype=blogdetail&sharerId=160630574&sharerefer=PC&sharesource=lanhuazui10&spm=1011.2480.3001.8118) 这里将常用的后缀,元音组合,辅音组合列出 问…...
语音修复终极指南:5分钟掌握VoiceFixer,让受损音频重获新生
语音修复终极指南:5分钟掌握VoiceFixer,让受损音频重获新生 【免费下载链接】voicefixer General Speech Restoration 项目地址: https://gitcode.com/gh_mirrors/vo/voicefixer 你是否曾遇到过这样的情况?珍贵的历史录音充满杂音&…...
427-evo tmux
技术趋势概述 2024年主要技术趋势聚焦人工智能、云计算、边缘计算、量子计算等领域的发展。行业关注点包括生成式AI的落地应用、云原生架构的演进、算力需求爆发下的硬件创新等。 人工智能与机器学习 生成式AI从文本生成向多模态(图像、视频、3D)扩展&am…...
FPGA在高性能计算中的优势与应用实践
1. FPGA在高性能计算中的独特价值作为一名长期从事FPGA开发的工程师,我见证了FPGA从简单的胶合逻辑到高性能计算核心的蜕变。FPGA(现场可编程门阵列)本质上是一块空白的数字画布,开发者可以通过硬件描述语言在上面"绘制"…...
