给出一个 QML 递归组件的具体示例
以下是一个简单的 QML 递归组件示例,该组件可以创建一个无限层级的树形结构:
import QtQuick 2.0
Rectangle {
width: 400
height: 400
// 定义递归组件
Component {
id: treeNode
Rectangle {
width: 100
height: 50
color: Qt.rgba(Math.random(), Math.random(), Math.random(), 1)
Text {
text: index
anchors.centerIn: parent
}
// 创建子节点
Repeater {
model: Math.floor(Math.random() * 3) + 1 // 随机生成子节点数量
delegate: treeNode
}
}
}
// 创建根节点
Component.onCompleted: {
var rootNode = treeNode.createObject(parent)
rootNode.x = width / 2
rootNode.y = height / 2
}
}
该示例代码中,我们定义了一个名为 treeNode 的 QML 组件,该组件包含一个矩形和一个文本标签,以及一个 Repeater 组件,用于创建该节点的子节点。在 Repeater 的 delegate 中,我们递归地使用 treeNode 组件来创建子节点,从而实现无限层级的树形结构。
在 Component.onCompleted 中,我们使用 treeNode.createObject 方法创建了根节点,并将其放置在父组件的中心位置。
该示例中,每个节点的颜色都是随机生成的,您也可以根据实际需求调整节点的样式和布局。
原文地址: https://www.cveoy.top/t/topic/br9m 著作权归作者所有。请勿转载和采集!