30

QMLで要素を自動的にストレッチして、そのすべての子要素が収まるようにするにはどうすればよいですか? 間隔を指定する方法は?たとえば、テキストを長方形で囲みたいとします。長方形には、内部にある程度のスペースが必要です。

次のように書くと、長方形のサイズは 0,0 になります。

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

    Text {
        text: "Hello"
    }
}

QMLアイテムをコンテンツに合わせて成長させる方法Columnで提案されているように、要素を使用して修正しようとすると? 、次に、ウィンドウ/親全体を介して列を取得し、

Column {
    anchors.centerIn: parent

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

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

編集:

Flowの代わりに要素を使用しようとしましたColumnが、ウィンドウ/親全体で行を取得しました。

4

3 に答える 3

47

childrenRectこれにはプロパティを使用できます。

import QtQuick 2.0

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"
        }
    }
}

ただし、直接の子の 1 つでchildrenRectusing と組み合わせて使用anchors.centerIn: parent​​すると、バインド ループに関する警告が発生することに注意してください。

于 2011-06-03T08:42:34.960 に答える
8

widthと を手動で設定することheightはできますが、少し見にくいです:

Rectangle {
    color: "gray"
    width: label.width+20
    height: label.height+20
    anchors.centerIn: parent

    Text {
        id: label
        anchors.centerIn: parent
        text: "Hello"
    }
}
于 2011-06-02T10:38:04.843 に答える