您的位置:首页 > 产品设计 > UI/UE

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

2018-01-25 15:43 211 查看
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 属性来访问


Loader{  

    id: redLoader;  

    anchors.left: parent.left;  

    anchors.leftMargin: 4;  

    anchors.bottom: parent.bottom;  

    anchors.bottomMargin: 4;  

    sourceComponent: colorComponent;  //使用 sourceComponent 属性来加载 id 为 colorComponent 的组件对象

    onLoaded:{  

        item.color = "red"; 
//都可以通过 Loader 的 item 属性来访问

    }  

}  

//对于信号的访问,我们则可以使用 Connections 对象


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: