QML:如何获得中继器的总高度?

时间:2018-08-21 19:35:31

标签: qt qml qt5 repeater

我有一个直放站,但直放站的孩子身高各不相同,我无法确定自己。但是,我需要找到所有直放站孩子的总身高。我知道我可以遍历所有孩子并加总他们的身高,但是我觉得这效率低下,希望能有更好的方法。这是我用来测试的一些示例代码:

import QtQuick 2.10
import QtQuick.Window 2.10

Window {
id: root
width: 320
height: 580

Component.onCompleted: loadData()

function loadData() {
    var len, i, repeater_data
    len = 3
    repeater_data = new Array(len)
    for (i = 0; i < len; i++) {
        repeater_data[i] = { "name": i, "height": (Math.random() * 100 + 50) }
    }
    repeater.model = repeater_data
}

Flickable {
    id: mainFlick
    anchors.fill: parent
    contentHeight: mainColumn.height
    Column {
        id: mainColumn
        width: parent.width

        Repeater {
            id: repeater
            width: parent.width
            model: []
            delegate: Column {
                id: repeaterItem
                width: parent.width
                Text {
                    text: modelData["name"] + " - Height: " + modelData["height"]
                    height: modelData["height"]
                }
            } // repeaterItem
        } // repeater
    } // mainColumn
} // mainFlick
} // root

我尝试了各种'childrenRect'属性的应用,但都无济于事。

2 个答案:

答案 0 :(得分:0)

例如,如果有len = 3

  • 0-高度:86.47358953069201
  • 1-高度:147.20601108198989
  • 2-高度:100.03074850782205

如果我在根项目中添加以下代码:

focus: true
Keys.onPressed: {
    console.log(mainFlick.contentHeight)
    console.log(mainColumn.height)
}

我获得:

qml: 333.71034912050396
qml: 333.71034912050396

不是在找什么吗?

答案 1 :(得分:0)

我正在寻找这个问题的答案,发现您可以使用它

mainColumn.childrenRect.height

这将提供列子级的总高度或totatl行子级的宽度。

相关问题