1

問題があり、解決策が見つかりません。ここで見つけていただければ幸いです。次のように、モデルとデリゲートなどを使用して ListView を作成しました。

Item {
id: creation;   width: parent.width ; height: parent.height
.....
ListView {
        id: mainViewLiist
        model: CreationModel {id: modelCreation}
        delegate: delegateCreation
        width: parent.width; height: parent.height;  x: -(screen.width * 1.5);
        cacheBuffer: 100;
    }
}

デリゲートにはText、TextEditなどが含まれます....次のようなものです:

Component {
id: creationDelegate
Item {
    id: itemCreate
   ....
     Row {
                id: rowSerie
                spacing: 5
                Text {
                    id: seriesLabel
                    text: "Series:"
                    ....
                }

                TextEdit {
                    id: seriesTextEdit
                    text: ""
                    ....
                  }
           }
     .... 
    }
....
}

同じアイテム「作成」内には、次のような 2 つのボタンを持つツールバーもあります。

ToolBar { id: toolBarCreation; height: 40;
    width: parent.width;
    opacity: 1.0
    button1Label: "Back"
    button2Label: "Create"
    onButton1Clicked:
    {
      ...
    }
    onButton2Clicked:
    {
        ...
    }
  }

私が欲しいのはこれです:2番目のボタン「Create」をクリックすると、listView内のすべてのアイテムの「seriesTextEdit」と呼ばれるTextEditに書かれているものをconsole.log(arg1、...)で表示したいだけです. たとえば、リストビューに 10 個のアイテムが含まれていて、ユーザーがすべてのアイテムのすべての TexTedit に値を挿入した場合、どうすればそれらのデータにアクセスできますか? どうもありがとう、ジャンマルコ

4

1 に答える 1

6

ListView は、表示領域にない項目を破棄し、表示される新しい項目を作成するため、使用するのに不適切なクラスである可能性があります。それを望まない場合は、リピーターを使用してください。

とにかく、ListView.contentItem.children を使用して ListView の子アイテムにアクセスできます。試してみたところ、追加の要素(おそらくヘッダー)が含まれていました。

リスト アイテム デリゲートのルートに TextEdit テキスト (この例では seriesName) のエイリアス プロパティを設定することをお勧めします。前述のように、ListView にはすべてのモデル項目の要素が含まれていない可能性があるため、おそらくインデックスにも同じものが必要です。次に、ループを使用してテキストを取得できます。

print(mainViewLiist.contentItem.children.length);
for (var i = 0, l = mainViewLiist.contentItem.children.length; i < l; i++) {
    var child = mainViewLiist.contentItem.children[i];
    print(i, ": ", child, "=", child.text);
}
于 2012-04-04T18:44:29.570 に答える