Programmatisch das Hinzufügen einer neuen Zeile zu einer QAbstractListModel Unterklasse

StackOverflow https://stackoverflow.com/questions/4702972

  •  11-10-2019
  •  | 
  •  

Frage

Im Rahmen einer bereits instanziiert QAbstractListModel Unterklasse, wie füge ich eine Zeile mit Daten in jeder Spalte und habe die zugehörigen QListView die neue Zeile angezeigt werden?

Es scheint, dass der einzige Weg, es zu tun ist insertRow und setData In meinem Modell neu zu implementieren, und sie dann in einer Art von Sequenz hacken zusammen innerhalb einer anderen Funktion eine Zeile hinzuzufügen. Muss ich das tun? Sicherlich Qt muss es einfacher machen, um eine neue Zeile hinzuzufügen.

Vielen Dank! --Dany.

War es hilfreich?

Lösung

Sie Ihr Modells Datenspeicher ändern, zwischen beginInsertRows () und endInsertRows ().

Zum Beispiel, sagen wir, Sie haben eine flache Liste Modell und Ihr Modell speichert die Daten intern in einem QVector m_Data. Sie wollen die Liste vorangestellt, das heißt Einsatz einer Reihe an Position 0:

beginInsertRows( QModelIndex(), 0, 0 ); //notify views and proxy models that a line will be inserted
m_data.prepend( somedata ); // do the modification to the model data
endInsertRows(); //finish insertion, notify views/models

Andere Tipps

Ich fürchte, Sie es auf diese Weise zu tun haben. Von der docs :

Modelle, die Schnittstellen zu resizable bieten Liste artige Datenstrukturen zur Verfügung stellen können Implementierungen von insertRows () und removeRows () .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top