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

Qml-Item的Id生效范围

Qml-Item的Id生效范围

前置声明

  1. 本实例在Qt6.5版本中做的验证
  2. 同一个qml文件中,id是唯一的,即不同有两个相同id 的Item;当前qml文件中声明的id在当前文件中有效(即如果其它组件中传入的id,与当前qml文件中id 相同,当前qml文件中id生效)
  3. 在父级qml文件中声明的id,可以传递给子集的qml文件中使用
  4. 实例由4个qml文件组成:主qml ( ItemIdScopeTest.qml): 由3个子qml组件元素;子qml1(ItemIdGDataPro.qml)定义了一个纯属性的Item,另两个子qml(ItemIdComponent_1.qml,ItemIdComponent_2.qml)中由一个Rectangle元素组成

Item Id生效范围 实例代码

  1. ItemIdGDataPro.qml文件,定义了id名称和两个color属性, 代码如下:
import QtQuick
//由于测试Item中id 作用范围和影响
Item{id:idGDataProproperty color reColor1: "blue"property color reColor2: "green"onReColor1Changed: {console.log("reColor___1   Changed");}onReColor2Changed: {console.log("reColor___2   Changed");}}

2.ItemIdComponent_1.qml 文件内容如下

	import QtQuick
//用于测试Item中id 作用范围和影响
Item{ItemIdGDataPro{id:idGDataProproperty color reColor1: "blue"}Rectangle{id:idComp1width: 100height: 100color: idGDataPro.reColor1}
}

3.ItemIdComponent_2.qml 文件内容如下

import QtQuick//由于测试Item中id 作用范围和影响
Item{Rectangle{id:idComp2width: 100height: 100//Comp2 中 idGDataPro.reColor2color: idGDataPro.reColor2}
}

3.ItemIdScopeTest.qml 文件,使用其它3个 子qml 元素,内容如下

import QtQuick//由于测试Item中id 作用范围和影响。
//1.在同一个qml中不能有Item 有相同的id;
//1.在qml文件中,定义的id 优先级最高
//2.在父qml文件中,设置其它Item的id,包含在父qml文件中其它组件所在qml中可以使用此id的属性Item{height: 480width: 320Rectangle{anchors.fill: parentItemIdGDataPro{id:idGDataPro}ItemIdComponent_1{id:idComp1x:20y:20}ItemIdComponent_2{id:idComp2x:150y:20}}
}

结果:
1.ItemIdScopeTest.qml 文件中定义的Id,可以在ItemIdComponent_2.qml中使用;
2.ItemIdComponent_1.qml 中定义了相同Id名称的“ idGDataPro”,在ItemIdComponent_1.qml文件中就使用了自身定义的“idGDataPro”;
3.实验验证方式:可以通过添加onXXXChanged() 函数(XXX代表定义的属性),来验证是哪个对应属性发生了改变

Item Id生效范围效果

1.可验证:
a.主qml中不定义ItemIdGDataPro 对象,,在子qml组件中使用ItemIdGDataPro 的属性效果。
b.主qml中定义ItemIdGDataPro 对象,,在某个子qml组件中定义主qml同样属性Id的对象,修改主qml中ItemIdGDataPro 对象属性值,查看是否影响子qml中属性值。
在这里插入图片描述


http://www.mrgr.cn/news/54933.html

相关文章:

  • autMan框架对接飞书机器人
  • 【STM32学习】PWM学习(四),散热风扇的控制,PWM调速调制,
  • idea2024启动Java项目报Error running CloudPlApplication. Command line is too long.
  • docker 资源限制+调优详解
  • 全面了解 NGINX 的负载均衡算法
  • C++题集
  • Java集合剖析2】Java集合底层常用数据结构
  • 利士策分享,财富多少,才是恰到好处?
  • 推荐一款多功能理科计算器:Math Resource Studio Pro
  • WPF入门_03路由事件
  • 数据结构(C语言):顺序表
  • WPF 回到主线程
  • Egg.js 项目的合理 ESLint 配置文件模板
  • 锁的原理以及使用
  • 《知道做到》
  • 【MySQL核心面试题】MySQL 核心 - Explain 执行计划详解!
  • 如何用AI大模型提升挖洞速度
  • upload-labs Pass-04
  • 使用 NASM 和 Windows API 创建一个简单窗口的完整实例
  • 图幅结合表DWG转DXF,使用DXF文件进行批量影像分幅
  • 字面量优化、alignas和alignof、属性说明符和标准属性
  • Java方法的递归调用
  • 27.2 动态分片方案和它要解决的问题
  • template <typename T>详解
  • 【力扣打卡系列】滑动窗口与双指针(乘积小于K的子数组)
  • 动态规划-子数组系列——乘积最大子数组