1

各行に InputText を含む Listview が必要です。ユースケースは、行ごとに数量を変更できるアイテムのカートです。

以下のコードでは、Listview はラベルとテキスト ボックスを横に表示しています。

問題は、すべてのテキスト ボックスの ID が同じになることです。そのため、最後に変更されたテキスト ボックスの値に基づいて、すべてのテキスト ボックスの値が変更されます。例: 最初のアイテムに 10、2 番目のアイテムに 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 に答える