在Qt Quick中,如何确保ListView';s代表';s宽度等于视图';宽度是多少?
以下是我的QML视图:在Qt Quick中,如何确保ListView';s代表';s宽度等于视图';宽度是多少?,qt,listview,qt-quick,Qt,Listview,Qt Quick,以下是我的QML视图: // Imports ommitted Item { id: paymentMethods required property PaymentMethodsModel model ColumnLayout { anchors.fill: parent; Text { text: "Payment methods"; } ListVie
// Imports ommitted
Item {
id: paymentMethods
required property PaymentMethodsModel model
ColumnLayout {
anchors.fill: parent;
Text {
text: "Payment methods";
}
ListView {
Layout.fillHeight: true
Layout.fillWidth: true
model: paymentMethods.model
delegate: PaymentMethods.Item { }
}
ToolBar { }
}
}
问题是,它看起来像这样:
我认为这是因为代理没有指定宽度,因为如果我这样做:
delegate: PaymentMethods.Item {
width: parent.width
onPmSaved: {
ListView.view.model.rename(index, newName)
}
}
看起来好多了:
问题是,当我对项目进行重新排序的编辑时,会出现以下错误:
qrc:/PaymentMethods.qml:32: TypeError: Cannot read property 'width' of null
有没有一种好方法可以将QML ListView的委托宽度设置为父项的全宽度?在重新排序的转换过程中,项没有父项,因此错误表明,一种可能的解决方案是根据是否有父项设置项的宽度
width: parent ? parent.width : 40 // default value
在重新排序的转换过程中,项目没有父项,因此错误指示它,一个可能的解决方案是根据项目是否有父项来设置项目的宽度
width: parent ? parent.width : 40 // default value
从
列表视图
:
委托将根据需要实例化,并可能随时被销毁。因此,状态不应存储在委托中。委托通常是ListView的contentItem的父级,但通常取决于它在视图中是否可见,父级可以更改,有时为null。因此,不建议从委托中绑定到父属性。如果希望委托填写ListVIEW的宽度,请考虑使用以下方法之一:
从
列表视图
:
委托将根据需要实例化,并可能随时被销毁。因此,状态不应存储在委托中。委托通常是ListView的contentItem的父级,但通常取决于它在视图中是否可见,父级可以更改,有时为null。因此,不建议从委托中绑定到父属性。如果希望委托填写ListVIEW的宽度,请考虑使用以下方法之一:
你能分享吗?@MaximSkvortsov好的,我试试看!你能分享吗?@MaximSkvortsov好的,我试试看!