2013-02-07 7 views
10

Ich verwende Qt-Modell/View-Framework. Wenn ich die Daten im Modell zurücksetze, muss ich das Modell zurücksetzen, damit auch die Ansichten aktualisiert werden. Wie es geht? Ich habe ein Signal modelReset(QPrivateSignal); im QAbstractItemModel gefunden, Ist das der Weg, es zu lösen? Wie wird das Signal ausgesendet? Vielen Dank.Wie man das Modell in Qt zurücksetzt?

+1

wert zu erwähnen, dass es auch andere Methoden, die Ansichten helfen zu aktualisieren. Alles hängt davon ab, welche Änderungen vorgenommen werden. Das Zurücksetzen des Modells ist nützlich, wenn Sie große Veränderungen im Modell durchführen. Es gibt 'beginInsertRow',' beginMoveRows', 'beginRemoveRows'. Alle diese Methoden gelten auch für Spalten. Wenn Sie also kleine Änderungen durchführen wollen, verwenden Sie 'beginResetModel' nicht, da es das gesamte Modell in der Ansicht wiederherstellt, anstatt kleine Änderungen in der Ansicht anzuwenden. –

Antwort

11

Sie rufen beginResetModel(), bevor Sie Ihre Daten zurücksetzen, und dann endResetModel(), sobald Sie fertig sind. Die endResetModel() sendet das private Signal aus.

+0

Danke, das hat es getan. – Borzh

2

Wie Sie sehen here, ist die bevorzugte Methode, die und endResetModel() Funktionen rund um Ihren Reset-Code in Ihrer Modell-Unterklasse zu verwenden.

Dies sollte die korrekte Ausgabe des Signals behandeln. Einige der QAbstractItemModel Subklassen

könnte Ihnen ermöglichen, model.removeRows(0,model.rowCount()) (andere müssten Sie es selbst zu implementieren) zu verwenden

Verwandte Themen