2016-08-03 3 views
1

Ich lese über die dynamically re-arrange-able view. Dasselbe ist auch im Qt-Creator als Beispiel verfügbar.Index aktualisiert nicht in der dynamischen Ansicht Anordnungsbeispiel

Ich wollte diese aktualisierte Reihenfolge in meiner Datenbank speichern. Ich fügte hinzu, eine zusätzliche Zeile in die Spaltendefinition für die Indexwerte Überprüfung:

 Column { 
       id: column 
       anchors { fill: parent; margins: 2 } 

       Text { text: 'Name: ' + name } 
       Text { text: 'Type: ' + type } 
       Text { text: 'Age: ' + age } 
       Text { text: 'Size: ' + size } 
       Text { text: 'Rank: ' + index } // Added to test the index values 
      } 

aber ich merke, dass nach dem die Elemente neu arrangieren, wird der Indexwert in der Benutzeroberfläche als elben zeigt. Ändert sich der Index nicht? Oder die Bindung des Textes funktioniert nicht richtig und der aktualisierte Indexwert wird nach der Neuanordnung nicht angezeigt?

Vorher:

enter image description here

Nach dem obersten Element bewegt (Polly) ein wenig nach unten:

enter image description here

So wie ich es verstehe, zeigen Ranks sollte immer von 0 zum höchsten Wert, wenn wir uns von oben nach unten bewegen, unabhängig von der Umordnung, weil die Indexwerte in dieser Reihenfolge liegen.

Antwort

1

Das Ding ist das index, das Sie in Ihrem Vertreter anzeigen, ist der ursprüngliche Index im PetModel. Um Sie davon zu überzeugen, müssen Sie das Beispiel nur geringfügig ändern.

PetsModel { 
    id: petsModel 
} 

DelegateModel { 
    id: visualModel 
    model: petsModel 
    delegate: dragDelegate 
} 

... 

ListView { 
    id: view 
    anchors { fill: parent; margins: 2; rightMargin: parent.width/2+2 } 
    model: visualModel 
    spacing: 4 
} 

ListView { 
    id: view2 
    anchors { fill: parent; margins: 2; leftMargin: parent.width/2+2 } 
    model: petsModel 
    delegate:dragDelegate 
    spacing: 4 

} 

Sie werden sehen, dass, egal wie Sie die Elemente um in view bewegen, können die tatsächlichen Einzelteile bestellen in view2 gleich bleibt.

Die DelegateModel fungiert als Proxy für den tatsächlichen PetModel (Art wie QSortFilterProxyModel)

Wenn Sie den Proxy-Index angezeigt werden soll, verwenden Sie die beiliegende dragArea.DelegateModel.itemsIndex Eigenschaft

Column { 
    id: column 
    anchors { fill: parent; margins: 2 } 

    Text { text: 'Name: ' + name } 
    Text { text: 'Type: ' + type } 
    Text { text: 'Age: ' + age } 
    Text { text: 'Size: ' + size } 
    Text { text: 'Index: ' + index } 
    Text { text: 'Display Index: ' + dragArea.DelegateModel.itemsIndex } 
} 
Verwandte Themen