2013-01-20 14 views
5

Potrzebuję pomocy przy dodawaniu elementów do listy odtwarzania qml, mam obszar tekstowy i przycisk, który doda tekst textarea do elementu listview po naciśnięciu, oto moja próba:QML, dynamicznie dodając elementy do widoku listy

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 = "" 
    } 
} 

Próbowałem dołączyć, ale nie pojawia się na liście ... jakiejkolwiek pomocy?

+4

w swoim p1button onClicked, wyczyszczone tekst w TextArea * przed * dodawanie tekstu do ListModel Oczywiście tekst nie pokaże w górę. – Dickson

+0

Tekst nadal się nie pojawia, myślę, że jest to problem z delegatem ... (zredagowałem pytanie) – Hairo

+0

Nie jestem pewien, ale ... zmień swój identyfikator 'delegata' na coś innego, ponieważ kiedy użyj 'delegate: delegate' w twoim ListView, zakładam, że jest to' delegate: p1scores.delegate', więc powraca do siebie. – Dickson

Odpowiedz

8

Spróbuj bez cudzysłowów wokół „wynik”, tak:

onClicked: { 
    p1model.append({score: p1input.text}) 
    p1input.text = "" 
} 
Powiązane problemy