【qml】QML | 创建自定义组件(02)

本文介绍使用QML的Component类型创建和加载自定义组件的方法。包括在单个qml文件中定义组件并通过Loader加载,以及将组件以独立的qml文件形式创建并加载。通过实例演示如何实现页面间的跳转。

开篇

在《QML | 创建可重用的组件》一文中,描述了创建自定义组件的第一种方法。本文将来描述第二种方法:

使用Component创建自定义组件

该种方法在实际使用中,可有两种方式:

  • (1)在qml文件内创建自定义的组件

  • (2)以qml文件的方式创建组件。

在qml文件内创建自定义的组件

组件通常由组件文件定义,也就是.qml文件。Component类型允许在一个QML文档内定义QML组件,而不用作为一个单独的QML文件,例如如下代码:

该组件的封装代码是放置于main.qml这个应用根描述文件中的,我们运行一下:


将得到一个空白的窗体。

如果我们要使用这个组件,我们可以使用Loader类型,该QML类型用于:动态加载QML组件。

这时候会动态加载这个组件,运行则可以看见一个蓝色的矩形:

也可以使用Loader创建多个矩形:

运行效果如下:

综上可见,虽然矩形本身会自动渲染和显示,但在Component中定义的则不会这样。因为Component将QML类型封装在内部,就好像它们是在一个单独的QML文件中定义的,直到请求时(在本例中,使用Loader类型)才加载。理解了这一点,如果代码这些写:

结果则是:无法运行程序。因为这种写法在本质上是没有QML根元素的。因此需注意:

在Component类型封装的QML组件中不能存在多个同级的QML类型,只能存在一个根元素。

使用Component在qml文件内创建组件不能直接实例化,可以结合:Loader、Repeater、View视图、脚本来使用。下文将描述使用Component创建多个qml组件。

使用Component创建多个qml组件

使用Component创建多个qml组件在实际的QML应用开发中是一种较为常用的方法,因为一个应用软件,会包含多个软件UI,例如下图所示效果:


在上图所示的窗体中会有四个按钮,分别为:page_1、page_2、page_3、page_4。当我们在点击其中的按钮后,会跳转到对应的页面,然而在页面中又有其他的QML类型和逻辑。这时候则需要使用Component来封装不同页面的组件。以上图效果为例,则需要创建四个不同的页面描述qml文件,这里文件名称如下:

然后使用Component创建四个页面qml组件,例如下例代码:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iriczhao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值