Ich mag mit einem Spaltenlayout dynamisch veränderbares Fenster haben, so dass alles, was verbleibende Raum durch das letzte Element in der Spalte gefüllt ist. Ich könnte dies tun, indem ich die Höhe des letzten Elements in Javascript dynamisch berechne. Ich könnte auch das letzte Element aus der Spalte verschieben und das obere Ende an den unteren Rand der Spalte und den unteren Teil des Containers binden, allerdings müsste ich dann auch die neue Größe der Spalte aus ihrem Inhalt berechnen.Wie mache ich den letzten Eintrag im QML-Container, um den verbleibenden Platz zu füllen?
import QtQuick 2.0
import QtQuick.Controls 1.1
Rectangle {
id: rect
anchors.fill: parent
Column {
id: myColumn
anchors.fill: parent
Rectangle {
id: container
signal clicked
width: label.width + 20; height: label.height + 6
anchors { right: parent.right }
border.width: 1
MouseArea {
id: mouseArea
anchors.fill: parent
onClicked: {
if (myColumn.state == 'hidden') { myColumn.state = '' }
else { myColumn.state = 'hidden'; }
}
}
Text {
id: label
text: { if (myColumn.state == '') {"Hide"} else {"Show"} }
anchors.centerIn: parent
}
}
Text {
id: textualBox
text: "A Big Box"
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
anchors { left: parent.left; right: parent.right }
height: 200
}
TableView {
id: table
width: parent.width
height: { myColumn.height - container.height - textualBox.height }
model: myData
TableViewColumn { role: "name"; title: "name"; width: 60 }
TableViewColumn { role: "stuff"; title: "stuff"; width: 60 }
}
states: State {
name: 'hidden'
PropertyChanges {
target: textualBox
height: 20
text: "a little box"
}
}
}
ListModel {
id: myData
ListElement{ name: "content" ; stuff: "4.5" }
ListElement{ name: "content" ; stuff: "4.5" }
ListElement{ name: "content" ; stuff: "4.5" }
}
}
Gibt es einen eleganteren Weg dies zu tun?