盛世清平~Qt quick学习笔记_10_还不理解的话

forwardTo 属性是列表类型,它表示传递按键事件给列表内的对象,如果某个对象 accept 了某个按键,那位列其后的对象就不会收到该按键事件。示例代码 "Keys.forwardTo: [moveText, likeQt];" 表明转发按键给 id 为 moveText 的 Text 对象和 id 为 likeQt 的 CheckBox 对象。 moveText 在前面,如果它消耗掉某个键, likeQt 就收不到了。你可以修改 Text 对象的 Keys.onPressed 附加信号处理器,在 case 列表中添加 Qt.Key_Space 看看效果。


嵌入式组件

你定义的组件是一个新的类型,它必须被实例化以后才可能显示。而要实例化一个嵌入在 qml 文档中定义的组件,则可以通过 Loader 

单独文件中定义组件

BusyIndicator.qml 文件中的顶层 item 是 Control ,而我们使用时却是以 BusyIndicator 为组件名(类名)。这是我们定义 Component 时要遵守的一个约定:组件名字必须和 qml 文件名一致组件名字的第一个字母必须是大写。对于在文件中定义一个组件,就这么简单了,再没有其它的特殊要求。 Qt Quick 提供的多数基本元素和特性,你都可以在定义组件时使用。

给颜色选择组件起个名字叫 ColorPicker ,对应的 qml 文件为  ColorPicker.qml ,那么你就可以在其它 QML 文档中使用 ColorPicker {...} 来定义 ColorPicker 的实例。--->类似于嵌入式的Loader的功能,对照来看。这里还有点问题没有解决

它和嵌入式定义有明显不同: Component 对象不见咧!

详细介绍的Loader

Loader 可以使用其 source 属性加载一个 qml 文档

Loader 可以通过其 sourceComponent 属性加载一个 Component 对象。

当你需要延迟一些对象直到真正需要才创建它们时, Loader 非常有用。 当 Loader 的 source 或 sourceComponent 属性发生变化时,它之前加载的 Component 会自动销毁,新对象会被加载。将 source 设置为一个空字符串或将 sourceComponent 设置为 undefined ,将会销毁当前加载的对象,相关的资源也会被释放,而 Loader 对象则变成一个空对象。


对于 Loader 加载的 item ,它暴露出来的接口,如属性、信号等,都可以通过 Loader 的 item 属性来访问

  1. Loader{  
  2.     id: redLoader;  
  3.     anchors.left: parent.left;  
  4.     anchors.leftMargin: 4;  
  5.     anchors.bottom: parent.bottom;  
  6.     anchors.bottomMargin: 4;  
  7.     sourceComponent: colorComponent;  //使用 sourceComponent 属性来加载 id 为 colorComponent 的组件对象
  8.     onLoaded:{  
  9.         item.color = "red";  //都可以通过 Loader 的 item 属性来访问
  10.     }  
  11. }  
// 对于信号的访问,我们则可以使用 Connections 对象


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值