Как получить доступ к данным внутри делегата списка просмотра QML? - PullRequest
0 голосов
/ 20 января 2019

Как вы получаете данные, которые находятся внутри списка. У меня есть QML-список, в котором внутри текстового поля есть текстовое поле. Как я должен назвать текст в текстовом поле внутри delagate списка?

    ListView {
        id:listview
        model: 10
        delegate: Component{
           id:component

           Item{
              id:item

              Textfield{
                  id:textfield
              }
        }
    }

    Button{
        onClicked:{

           for(var i=0 ; i<listview.model; i++){
                myfunc(     )    <---- textfield at index i text to be put here
           }
        }
    }

После нажатия кнопки я хотел бы получить данные в текстовом поле по определенным индексам списка или в примере кода all.

1 Ответ

0 голосов
/ 21 января 2019

Ваш подход неверен, вы должны получить доступ к данным через модель, но ваша модель доступна только для чтения, то есть она никогда не будет изменена, вместо этого вы должны использовать ListModel или QAbstractItemModel.

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 1.4

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
    ListModel{
        id: mymodel
        Component.onCompleted: {
            for(var i=0; i< 10; ++i){
                mymodel.append({"text": ""})
            }
        }
    }
    ListView {
        id:listview
        height: contentHeight
        model: mymodel
        delegate: TextField{
            id:textfield
            onTextChanged: model.text = text
        }
    }
    Button{
        text: "Press me"
        anchors.top: listview.bottom
        onClicked:{
            for(var i=0 ; i<mymodel.count; i++){
                console.log(mymodel.get(i).text)  // <---- textfield at index i text to be put here
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...