gpt4 book ai didi

c++ - 如何让 QML 容器中的最后一项填充剩余空间?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:18:40 32 4
gpt4 key购买 nike

我想要一个可动态调整大小的窗口,该窗口具有列布局,以便任何剩余空间都由列中的最后一项填充。我可以通过动态计算 javascript 中最后一项的高度来做到这一点。我也可以将最后一个项目移出列并将顶部绑定(bind)到列的底部和容器的底部,但是我还必须根据其内容计算列的新大小。

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

有没有更优雅的方式来做到这一点?

最佳答案

您可以使用 ColumnLayoutLayout.fillHeight 附加属性代替 Column

import QtQuick 2.3
import QtQuick.Controls 1.2
import QtQuick.Layouts 1.1

ApplicationWindow {
visible: true
width: 640
height: 480

ColumnLayout{
anchors.fill: parent
Rectangle {
color: "red"
Layout.fillWidth: true
height: 30
}
Rectangle {
color: "blue"
Layout.fillWidth: true
Layout.fillHeight: true
}
}
}

关于c++ - 如何让 QML 容器中的最后一项填充剩余空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27319985/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com