我正在尝试创建一个可以通过添加或删除行来扩展或缩短的listView。意识到这很简单,但是问题是列似乎并未根据其新大小重新定位项目。
这是复制问题的最小代码
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
import QtQuick.Window 2.2
ApplicationWindow {
id: window
visible: true
width: 630
height: 891
ListModel {
id: productModel
ListElement {
description: "Test"
}
ListElement {
description: "Other test"
}
}
ListModel {
id: invoiceModel
ListElement {
description: "Factuur 6419"
}
ListElement {
description: "Factuur 6491"
}
}
ColumnLayout {
width: 500
ExpandingTable {
width: 500
model: productModel;
}
TextArea {
placeholderText: "test"
}
ExpandingTable {
width: 500
model: invoiceModel;
}
}
}
,然后是一个称为flastingtable.qml
的文件import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
ListView {
id: listView
height: contentHeight
interactive: false
delegate : RowLayout {
width: parent.width;
TextField {
text: description
}
Button {
text: "-"
onClicked: {
listView.model.remove(model.index)
}
}
}
Button {
text: "+"
anchors.left: listView.right
anchors.bottom: listView.bottom
onClicked: {
listView.model.append({ description: "" })
}
}
}
我特别不确定线条 listView.model.remove(model.index)
和 listView.model.append({ description: "" })
以及它是否应该是模型。或实际是ListView.model。
您的问题与ColumnLayout
组件有关。只需将其更改为旧的香草Column
,然后开心即可。如果您想详细说明,请阅读类似的问题:Stackoverflow