1

我需要每行都有一个带有 InputText 的 Listview。用例是一个购物车,其中每行的数量都可以更改。

使用下面的代码,Listview 在旁边呈现一个标签和一个文本框。

问题是,所有文本框都将具有相同的 id,因此,所有文本框值都根据最后一个文本框值更改而更改。例如:如果我为第一项输入 10,为第二项输入 12,则即使第一项的数量也会更改为 12。

onEnter用于演示。它可能是onFocusChanged前进:

    ListView {
    id:list
    model: fruitModel
    x:10
    y:10
    width: parent.width-20
    height: parent.height-20
    clip:true
    anchors.fill: parent
    delegate: Row {
        width: parent.width
        height:30
        Item
        {
        property variant myData: model
        property alias value: text.text
        Text {
            id:text
            width: parent.width
            height: 30
            text:name
        }
        InputText {
            id: inp_box
            text:qty
            width:100
            height:22
            anchors.verticalCenterOffset: 15
            anchors.horizontalCenterOffset:250
            focus: true
            onEnter: {
            editQty(inp_box.text);
            }
        }
        }
    }
    focus: true
    snapMode: ListView.SnapOneItem
    ScrollBar {
        flickable: list
        vertical: true
        hideScrollBarsWhenStopped:false
    }
    }
4

1 回答 1

1

您应该扩展您的editQty函数以将已编辑条目的索引fruitModel作为附加参数。当前条目的索引在列表视图的委托中可用index. 你这样做的方式,editQty没有机会知道要更改哪个条目。

于 2012-12-10T18:05:25.150 回答