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

QML Loader(加载程序)

Loader加载器用于动态加载 QML 组件。加载程序可以加载 QML 文件(使用 source 属性)或组件对象(使用 sourceComponent 属性)

常用属性:

active 活动
asynchronous异步,默认为false
item项目
progress 进度
source资源
sourceComponent资源组件
status状态

status:enumeration 

Loader.Null 加载器处于非活动状态或未设置 QML 源
Loader.ReadyQML 源已加载
Loader.Loading 当前正在加载 QML 源
Loader.Error 加载 QML 源时出错

信号:

loaded当状态为加载或就绪状态时,发射该信号

函数: 

setSource()设置资源

加载QML文件:

myWIdget.qml

import QtQuick 2.9Rectangle{width: 100;height: 100;color: "red"
}

main.qml

import QtQuick 2.9
import QtQuick.Window 2.2Window {id:window1visible: truewidth: 640height: 480title: qsTr("Hello World")Rectangle{width: 300;height: 300focus:truecolor: "lightBlue"Loader{id:loader1}Keys.onSpacePressed: { //按下空格loader1.source="myWidget.qml" //加载QML文件}}}

 加载组件对象:

使用sourceComponent属性

Rectangle{width: 300;height: 300focus:truecolor: "lightBlue"Component{id:con1Image{width: 200;height: 200source: "qrc:/image/zzpic23859.jpg"}}}Loader{sourceComponent: con1}//加载组件对象

 状态的使用:

Loader{id:loadsourceComponent: con1//加载的资源控件onStatusChanged: {if(load.status==Loader.Ready)console.log("加载完成")else if(load.status==Loader.Error)console.log("加载失败")else if(load.status==Loader.Loading)console.log("加载中")}}

setSource(url source,Object properties)

  • source资源
  • properties 对象
  • 创建将具有给定属性的给定组件的对象实例。属性参数是可选的。加载和实例化完成后,可通过 item 属性访问该实例。
//myWidget.qml
import QtQuick 2.9Rectangle{width: 100height: 100color: "red"
}//main.qmlRectangle{width: 300;height: 300focus:truecolor: "lightBlue"Loader{id:load}Component.onCompleted: {load.setSource("myWidget.qml",{color="yellow"})//设置资源和属性}}

加载程序的大小

如果源组件不是 Item 类型,则加载程序不会应用任何特殊的大小调整规则。用于加载视觉对象类型时,加载程序应用以下大小调整规则:

  • 如果未为加载器指定显式大小,则加载器会在加载组件后自动调整为加载项的大小。
  • 如果通过设置宽度、高度或锚定显式指定加载器的大小,则加载的项目将调整为加载器的大小。

当Loader中没有设置大小,直接使用控件大小

Rectangle{width: 300;height: 300focus:truecolor: "lightBlue"Component{id:com1Rectangle{width: 100height:100color: "red"}}Loader{//anchors.fill: parentsourceComponent: com1}}

 当Loader中设置了,优先使用Loader中的设置

例一:

Rectangle{width: 300;height: 300focus:truecolor: "lightBlue"Component{id:com1Rectangle{width: 100height:100color: "red"}}Loader{anchors.fill: parent//填充整个父类sourceComponent: com1}}

例二: 

Rectangle{width: 300;height: 300focus:truecolor: "lightBlue"Component{id:com1Rectangle{width: 100height:100color: "red"}}Loader{width:200height:200sourceComponent: com1}}

例一:                                                  例二: 

 从加载的对象接收信号:

使用item可以获取生成的对象

//myWidget.qmlimport QtQuick 2.9Rectangle{width: 100height: 100color: "red"signal pick //创建一个信号
}//main.qmlRectangle{width: 300;height: 300focus:truecolor: "lightBlue"Loader{id:loadsource: "myWidget.qml"}Connections{target: load.item//获取生成的对象onPick:console.log("执行")}}

焦点和关键事件

加载程序是一个焦点范围。必须将其焦点属性设置为true ,其任何子项才能获得活动焦点

//myWidget.qmlimport QtQuick 2.9Rectangle{width: 100;height: 100;color: "red"focus:trueKeys.onSpacePressed: {   //按下空格键触发console.log("加载项触发")event.accepted=true}}//main.qmlRectangle{width: 300;height: 300color: "lightBlue"Loader{id:loadsource: "myWidget.qml"focus:true//获取焦点}}

http://www.lryc.cn/news/31205.html

相关文章:

  • C++——类型转换
  • vue3:生命周期(onErrorCaptured)
  • vue过滤器
  • I/O模型
  • 前端必备技术之——AJAX
  • MySQL数据库 各种指令操作大杂烩(DML增删改、DQL查询、SQL...)
  • Java分布式全局ID(一)
  • 算法分析与设计之并查集详解
  • Linux - 内存性能评估
  • 00后初中辍学,转行程序员后,终于找到了女朋友
  • “Vue学习注意事项:掌握核心特性,注意性能优化和第三方库的使用“
  • 计算机网络协议详解(二)
  • 【CSS】CSS 复合选择器 ② ( 子元素选择器 | 交集选择器 )
  • Java集合专题
  • 双重差分法(DID):算法策略效果评估的利器
  • 【pytorch】使用mixup技术扩充数据集进行训练
  • 面向对象设计模式:创建型模式之单例模式
  • IsADirectoryError: [Errno 21] Is a directory: ‘.‘
  • 判断三角面片与空间中球体是否相交
  • 继承下的缺省参数值和访问说明符
  • Spring核心模块—— BeanFactoryPostProcessorBeanPostProcessor(后处理器)
  • 产品新人如何培养产品思维?
  • 「兔了个兔」CSS如此之美,看我如何实现可爱兔兔LOADING页面(万字详解附源码)
  • 【Java】阻塞队列 BlcokingQueue 原理、与等待唤醒机制condition/await/singal的关系、多线程安全总结
  • 【水下图像增强】Enhancing Underwater Imagery using Generative Adversarial Networks
  • Maven专题总结—详细版
  • 华为OD机试真题Java实现【字符串加密】真题+解题思路+代码(20222023)
  • 「Python 基础」函数与高阶函数
  • DIV内容滚动,文字符滚动标签marquee兼容稳定不卡
  • SpringBoot_第五章(Web和原理分析)