2016-06-08 19 views
0

ich ein Dummy-Listmodel erstellen zu zeigen, und ich geladen Tableview:QML Tableview mit delegierten Checkbox hat Probleme die

  ListModel{ 
       id: testModel 

       ListElement{ 
        status: false; 
       } 
      }  

      function testFunction() 
      { 
       for(var i=0;i<45;i++) 
       { 
        testModel.append({}); 
       } 
      } 

      TableView 
      { 
       id: idTPTable  
       height: 90 
       width: 150     
       model: testModel 
       z:-1 

       TableViewColumn { 
        role: "status" 
        title: "Activation On/Off" 
        heigth: 150  
        width: 100 
        delegate: Checkbox{ 
         id: idDelegatedCheckbox 
        }   
       }   
      } 

Ich gebe vor, die delegierten CheckBox-Komponente zu verwenden, um die Elemente in der Tableview zu wählen.

Ich überprüfe das erste Element in der Tabelle auf folgende Weise:

First item selected

Dann scrolle ich nach unten und zurück nach oben und den Elementen, die ich ausgewählt hatte verschwinden und anderes Element ausgewählt ist.

Diferent item selected

Wissen Sie, warum?

Vielen Dank im Voraus.

+1

Nun, ich denke, es ist in die Dokumentation unter Berufung auf, dass ** "Aus Performance-Gründen erstellt Delegierten können über mehrere Tabellenzeilen zurückgeführt werden Dies bedeutet, dass sich diese Werte ändern können, wenn Sie implizite Eigenschaften wie styleData.row oder model verwenden, nachdem der Delegat erstellt wurde. "** – BaCaRoZzo

Antwort

1

TableView Delegates werden nach Bedarf instanziiert und können jederzeit wiederverwendet oder zerstört werden. Wie bei allen Qt Quick-Objektansichten (ListView, GridView, PathView, TableView ...) sollte der Status niemals in einem Delegaten gespeichert werden. Daher muss Ihr CheckBox Delegat speichert seinen Zustand in dem Modell „geprüft“:

delegate: Checkbox { 
    id: idDelegatedCheckbox 
    checked: model.checked // read from the model when created or recycled 
    onCheckedChanged: model.checked = checked // write to the model when checked or unchecked 
}