を変更したときのColumnLayoutを調整して、私は、ファイルを設定したが、以下の内容でtest1.qmlと呼ば:リピータのデリゲートの高さが
import QtQuick 2.6
import QtQuick.Layouts 1.3
Rectangle {
width: 800; height: 1000;
ColumnLayout {
anchors.centerIn: parent
// Header goes here
Repeater {
model: 3
delegate: MyRectangle {
width: 150
height: width
color: "#44ff0000"
}
}
// Footer goes here
}
}
私はまた、セットアップファイルがが定義されtest2.qmlと呼ばれてきました次のように:
import QtQuick 2.6
import QtQuick.Layouts 1.3
Rectangle {
width: 800; height: 1000;
ColumnLayout {
anchors.centerIn: parent
// Header goes here
Repeater {
model: 3
delegate: Column {
MyRectangle {
width: 150
height: width
color: "#44ff0000"
}
}
}
// Footer goes here
}
}
最後に、MyRectangle.qmlは、以下の内容があります。
import QtQuick 2.6
Rectangle {
MouseArea {
anchors.fill: parent
onClicked: {
parent.height += 50
}
}
}
私の目標は、MyRectangleのインスタンスがクリックされたとき、その高さが変化することで、のColumnLayoutはアイテムがそれらの間隔を維持するように拡大すべきです。私はtest.qmlを実行すると
は、結果は、私は、彼らがMyRectangle重複のインスタンスをクリックしている互いにように、その中で、期待するものではありません。しかし、test2.qmlは、希望の動作を与え、MyRectangleのインスタンスは、間隔をColumnLayoutのように維持します。
derMの依頼で、以下のGIFがこれをより明確に説明するのに役立つと思います。
test1.qmlの(望ましくない)行動:
test2.qmlの(所望の)行動:
それはなぜ私はオブジェクトをの列にラップする必要があります。赤い結果?
リピータには、レイアウトを有していません。それらの中に子供が1人しかいない場合、なぜ、デリゲートとしてColumnまたはRowLayoutを使用しますか? – derM
リピーターは、デリゲートのいくつかのインスタンスを作成し、インスタンスごとにモデルデータを渡すことができます。レイアウトは、Repeaterをレイアウト内に配置してデリゲートを親にするか、または各デリゲートがxやyの値を設定するなど、独自の配置を気にすることができます。 – derM
あなたのコメントは当然のことです。ちょうど長方形。しかし、私がそれをしたとき、私のすべてのアイテムはお互いの上に重ねられました。 Rectangleに 'height:myDelegate.height'を追加するとデリゲートが正しく配置されますが、それ自体がColumnLayoutの一部であるRepeaterは正しい高さにならず、Repeaterの下にある項目はそれ。多くの試行錯誤の末、ColumnまたはColumnLayoutが私の問題を処理することがわかりました。私はRectangleが正しく動作しない理由を知ることに興味があります。 –