QML动态添加多个Button

QML中如果要布局大量的按扭,如果一个一个的去写,那就太low了,下面介绍一下利用 Qt.createComponent动态创建组件,大家先看一下结果图(确认一下眼神,是否是对的人)

在这里插入图片描述

1、createComponent() 函数介绍

/*
 * 输入:
 *     url: 要创建组件的qml文件名称,例如 “TestButton.qml”
 *     mode: 设置当前创建的方式为同步还是异步(Component.Asynchronous(异步), Component.PreferSynchronous(优先同步))
 *     parent: 父对象
 * 输出:
 *     object:输出为创建后的组件对象
 */
object createComponent(url, mode, parent)

第一个输入参数url,是要创建组件的qml文件,一般情况下需要填写;
第二个参数为该函数是异步操作还是同步操作,如果不设置,默认为第二个参数Component.PreferSynchronous,该模式下,同步优先,但是也有特殊情况下会异步操作:
1、URL引用网络资源
2、该组件是由于异步加载的另一个组件而创建的
第三个参数是父对象,可以不填写,后续会通过返回object的createObject()来添加父对象。
返回值为组件object,该组件的status有几种状态,如下:

0:Component.Null  组件为空
1:Component.Ready 组件加载成功
2:Component.Loading 组件正在加载中
3:Component.Error 组件加载失败,可以调用component.errorString()查看错误信息

2、createObject()函数介绍

该函数通过创建并返回此组件的对象实例,该实例将具有给定的父级和属性。properties参数是可选的。如果对象创建失败,则返回null。

/*
 * 输入:
 *     parent: 父对象
 *     object properties: 组件中的属性设置,可选
 * 输出:
 *     object:输出为创建后的组件对象
 */
object createObject(parent, object properties)

第一个输入参数为父对象,如果为空,则创建的组件自身为最高父节点,例如,创建一个新的独立窗口,此时应该将父节点设置为null,否则,需要将qml中父节点的id进行填写。
第二个参数为组件中的属性,例如,可以在创建实例时初始化对应的id,width,height等等。
返回值为对象,如果创建失败,此时返回的对象为null。

// 官方给出的例子,大家可以参考一下。
import QtQuick 2.0

  Item {
   
   
      id: container
      width: 300<
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值