2013-02-07 8 views
10

Sto usando il modello Qt/view framework. Quando resetto i dati nel modello, devo resettare il modello per consentire anche l'aggiornamento delle viste. Come farlo? Ho trovato un segnale modelReset(QPrivateSignal); nel QAbstractItemModel, è questo il modo di risolverlo? Come emettere il segnale? Grazie.Come resettare il modello in Qt?

+1

Vale la pena di ricordare che ci sono altri metodi che aiutano a aggiornare le viste. Tutto dipende da quali modifiche sono state apportate. Il ripristino del modello è utile quando si eseguono grosse trazioni nel modello. Esiste 'beginInsertRow',' beginMoveRows', 'beginRemoveRows'. Tutti questi metodi si applicano anche alle colonne. Quindi, se stai per eseguire piccole modifiche, non utilizzare 'beginResetModel' perché ricostruirà l'intero modello in vista invece di applicare piccole modifiche alla vista. –

risposta

11

Si chiama beginResetModel() prima di ripristinare i dati, quindi endResetModel() una volta terminato. Il endResetModel() emette il segnale privato.

+0

Grazie, l'ha fatto. – Borzh

2

Come si può vedere here, il metodo preferito è utilizzare le funzioni beginResetModel() e endResetModel() che circondano il codice di ripristino nella sottoclasse del modello.

Questo dovrebbe gestire l'emissione del segnale in modo appropriato.

Alcune delle sottoclassi qabstractitemmodel potrebbe consentire di utilizzare model.removeRows(0,model.rowCount()) (altri richiederebbe di implementare da soli)