在Qt Quick中,如何确保ListView';s代表';s宽度等于视图';宽度是多少?

在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

以下是我的QML视图:

// 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好的,我试试看!