qt – 拉伸元素以包含所有的孩子 - 代码日志

qt – 拉伸元素以包含所有的孩子

如何在QML中自动拉伸元素,使其所有的孩子适合它?而如何指定间距?例如,我想在文本周围有一个矩形。矩形应该有一些内部间距。

如果我写下面的内容,则矩形的大小为0,0。

Rectangle {
    color: "gray"
    anchors.centerIn: parent;

    Text {
        text: "Hello"
    }
}

如果我尝试通过使用Column元素来修复它,如How to make QML items to grow to fit contents?所示,那么我在整个窗口/父项中得到一列,

Column {
    anchors.centerIn: parent

    Rectangle {
        color: "gray"
        anchors.fill: parent
    }

    Text {
        anchors.centerIn: parent
        text: "Hello"
    }
}

编辑:

我也尝试使用Flow元素而不是列,但是我在整个窗口/父项中有一行。

您可以使用childrenRect属性:

import QtQuick 1.1

Rectangle {
    width: 320
    height: 200

    Rectangle {
        color: "BurlyWood"
        anchors.centerIn: parent
        width: childrenRect.width + 20
        height: childrenRect.height + 20

        Text {
            id: hello
            x: 10
            y: 10
            text: "Hello"
        }

        Text {
            anchors.left: hello.right
            anchors.leftMargin: 10
            anchors.top: hello.top
            text: "World"
        }
    }
}

但是请注意,使用childrenRect与使用anchors.centerIn:parent在一个直接的子节点中会产生关于绑定循环的警告。

http://stackoverflow.com/questions/6212445/stretching-element-to-contain-all-children

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:qt – 拉伸元素以包含所有的孩子