找回密码
 立即注册
Qt开源社区 门户 查看内容

Qml组件小知识

2019-10-25 11:07| 发布者: admin| 查看: 524| 评论: 0

摘要: 介绍组件构造,销毁,动态加载小知识。对象/组件都具有类似C++的构造函数和析构函数onCompleted对象构造完成自动执行;onDestruction对象销毁前自动执行。QtObject { Component.onCompleted: console.log("Comple ...

介绍组件构造,销毁,动态加载小知识。

对象/组件都具有类似C++的构造函数和析构函数


  • onCompleted对象构造完成自动执行;

  • onDestruction对象销毁前自动执行。
QtObject {
Component.onCompleted: console.log("Completed")
Component.onDestruction: console.log("Destruction")
}

使用Loader加载组件


  • Component必须具有子空间才能实例化;

  • onProgressChanged可以获取到组件的加载进度。
Component {
id: component
Text {
text:"Component"
}
}

Loader {
sourceComponent: component
onProgressChanged: console.log(progress)
}

动态加载Qml组件(1)


  • 原型:

  1. qml为qml组件描述语句;

  2. parent为依附于那个父类控件;

  3. filepath为重定向到文件的加载过程中的错误报告
object createQmlObject(qml,
object parent,
string filepath)

  • 例子
var object = Qt.createQmlObject('import QtQuick 2.0; Rectangle {color: "blue"; width: 50; height: 50}',
root,
"error.txt");

动态加载Qml组件(2)


  • 原型:

  1. url为qml文件(还可以加载网络qml文件);

  2. mode为创建qml的模式(同步或异步);

  3. parent指定某个控件为父类控件;

  4. object为附加属性。
object createComponent(url, mode, parent)
object createObject(parent, object properties)

  • 示例:
var component = Qt.createComponent("MyComponent.qml");
if(component.status == Component.Ready)
component.createObject(parent,{x:100, y:100});

----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:Qt君,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了