QML, динамическое добавление элементов в список

Мне нужна помощь с добавлением элементов в список qml, у меня есть текстовое поле и кнопка, которая добавит текст текстового поля в элемент списка при нажатии, вот моя попытка:

Component {
    id: delegate
    Item {
        width: 200; height: 28
        Label {
            text: score
        }
    }
}

ListView {
     id: p1scores
     model: p1model
     delegate: delegate
     anchors.top: p1name.bottom
     anchors.topMargin: units.gu(1)
}

ListModel {
     id: p1model
     ListElement { score: "0" }
}

TextArea {
     id: p1input
     width: units.gu(8)
     height: units.gu(3)
     horizontalAlignment: TextEdit.AlignHCenter
     inputMethodHints: Qt.ImhDigitsOnly
     contentHeight: units.gu(60)
     anchors.topMargin: units.gu(8)
}

Button {
     id:p1button
     text: i18n.tr("Add")
     width: units.gu(8)
     onClicked: {
        p1model.append({"score": p1input.text})
        p1input.text = ""
     }
}

я попытался добавить его, но он не отображается в списке ... любая помощь?


person Hairo    schedule 20.01.2013    source источник
comment
в вашей кнопке p1 onClicked вы очистили текст в TextArea перед добавлением текста в ListModel, конечно, текст не будет отображаться.   -  person Dickson    schedule 21.01.2013
comment
Текст по-прежнему не отображается, я думаю, что это проблема с делегатом... (отредактировал вопрос)   -  person Hairo    schedule 22.01.2013
comment
Я не уверен, но... измените свой идентификатор компонента delegate на что-то другое, потому что, когда вы используете delegate: delegate в своем ListView, предполагается, что это delegate: p1scores.delegate, поэтому он привязывается к себе.   -  person Dickson    schedule 23.01.2013
comment
я обнаружил проблему, она заключалась в том, что я не указал высоту списка, и, по-видимому, по умолчанию используется размер одного элемента...   -  person Hairo    schedule 24.01.2013


Ответы (1)


Попробуйте без кавычек вокруг 'score', например:

onClicked: {
    p1model.append({score: p1input.text})
    p1input.text = ""
}
person Patrick    schedule 20.09.2013