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

QML组件之间的通信方案(暴露子组件)

在项目里,经常有时候想让组件之间通信触发,但总是出现类似TypeError: Value is undefined等报错,下面写一下目前我使用的解决方案:

一、property alias

  • 概念:即别名机制,可以将某一组件或属性暴露给外部调用
    • alia:本身就译为别名
  • 特点:本质是引用绑定,为内部对象创建一个对外的引用接口
  • 场景:目前我使用于暴露组件id,以供跨组件使用
  • 举例:
    • 先在组件顶部使用property alias暴露子组件id
    //EnterPage.qmlRectangle{id:toenterRec//...property alias enterEmailTxtFld:emailTxtFld property alias enterPasswdTxtFld:passwdTxtFld TextField{id:emailTxtFld//...}TextField{id:passwdTxtFld//...}}
    • 然后再在需要通信的组件中创建出该组件的实例,就可以直接使用别名进行通信调用了
    //LoginPage.qmlRectangle{id:backRec//...MouseArea{z:0anchors.fill:parent onPressed:(mouse)=>{toenterRec.enterEmailTxtFld.focus=false toenterRec.enterPasswdTxtFld.focus=false}}}EnterPage{id:toenterRec//...}}
    • 我这边是用来实现点击背景取消所有的焦点事件,但其实后续废弃了,改成了直接封装函数使用

二、封装函数

在后续的开发中,我舍弃了别名的方案,改为了封装函数提供外部组件使用
在询问ai时,说是直接暴露组件对于封装性来说不太好,故改此方案

  • 举例:
    • 当前组件中封装好工具函数
    //EnterPage.qmlRectangle{id:toenterRec//...functionclearFocus(){emailTxtFld.focus=false passwdTxtFld.focus=false}}
    • 通信组件中创建好实例后,直接调用此函数
    //LoginPage.qmlRectangle{id:backRec//...MouseArea{z:0anchors.fill:parent onPressed:(mouse)=>{//...//调用函数toenterRec.clearFocus()}}}}

三、结语

虽然最后看来property alias并没有发挥实质性作用,但也是实践学习路上的过程,也先暂且记录。
目前的方案肯定还不够完善,但也是当下用的顺手便捷的了,以供之后补充更新吧…

http://www.jsqmd.com/news/707025/

相关文章:

  • 2026山东大学项目实训4月26日
  • 【Applicom】applicom PC Network Interfaces - Version 下载分享
  • Dream-Creator:本地化AI绘画工具的设计、部署与实战指南
  • 【Linux从入门到精通】第19篇:SSH远程管理进阶——不只是输入密码
  • 基于本地LLM的智能桌面宠物开发指南:从架构设计到实践部署
  • 进制只是“数数的规则”,就像我们日常用十进制(逢10进1),计算机底层用二进制(逢2进1)
  • 计算机组成原理教学辅助:用LM Z-Image模拟CPU指令执行
  • 【AI】MCP和SKILLS区别
  • STM32MP157 Linux驱动学习笔记(三):系统级驱动框架(UART/PCIe)
  • 【vllm】(二)vLLM v1 Engine — 模块超深度逐行分析之三
  • 【Linux从入门到精通】第20篇:性能监控工具大盘点
  • RWKV7-1.5B-G1A模型效果展示:对比传统LSTM在文本生成上的优势
  • CAPIO架构:基于CHERI的细粒度安全用户空间驱动
  • 2026成都诚信净水系统供应商:家用地暖供应商、家用格力空调供应商、新风系统中央空调、格力中央空调供应商、格力中央空调总代理选择指南 - 优质品牌商家
  • ESP32-S3-BOX-3开发套件:智能语音与物联网应用实战
  • 机器学习数据快速分析:实战方法与关键洞察
  • 大语言模型幻觉现象解析与应对策略
  • 工业级Wi-Fi 7接入点EKI-6333BE-4GD技术解析与应用
  • AAEON GENE-EHL5工业级单板计算机解析与应用
  • 从新回看《道德经》第二十二章的炊者不立,发现了权力熵增定律的底层逻辑
  • 【Linux从入门到精通】第21篇:Shell脚本开篇——什么是Shell?写第一个Hello World
  • API版本管理:向后兼容与平滑升级的企业级方案
  • Docker AI Toolkit 2026隐藏模式曝光:仅限docker ai enable --stealth启动的联邦学习协调器(附实测吞吐对比表)
  • 2026年Q2四川民宿规划设计标杆名录及核心参数对比:成都商业规划设计公司/成都太空舱民宿公司/成都景区规划推荐/选择指南 - 优质品牌商家
  • GLM-4.1V-9B-Base与C语言交互:通过本地API实现轻量级集成
  • 不止于展示:用3D WebView for Windows在Unity里打造可交互的Web AR/VR应用原型
  • 那些“无用”的书,成就一个“有趣”的人
  • OpenAI发表Nature论文:揭开AI模型总“说谎”的真相,人类对AI准确性的评估促使其产生幻觉
  • Copilot Next 工作流自动化配置到底难在哪?92%开发者卡在第3步——资深架构师逐行调试实录
  • Ryujinx模拟器完全指南:跨平台Switch游戏体验与深度优化策略