2009-09-27 7 views
8

Jestem trochę zdezorientowany tym, jaki jest poprawny sposób resetowania lub usuwania danych związanych z QAbstractItemModel. Piszę aplikację, w której użytkownik może "zacząć od nowa" z nowym zestawem danych (pustym lub małym).Czyszczenie/resetowanie modelu w qt (usuwanie wszystkich wierszy)

Czy powinienem usunąć stary model, gdy użytkownik wyśle ​​to żądanie? Czy powinienem zostawić model sam i po prostu usunąć wszystkie wiersze?

Pozdrawiam, Dan O

Odpowiedz

4

Generalnie wolałbym, aby model reagował na zmiany i podejmował niezbędne działania, aby zaktualizować swój widok (pośrednio). Jednak modele programowania mogą być (= jest) PITA, więc prawdopodobnie przeglądałbym palce, gdybym przeglądał kod, który utworzył nowy model i usunął stary. Zrób to tylko, jeśli masz pewność, że tylko użytkownik usunie wszystkie wiersze. Jeśli użytkownik może stopniowo usuwać elementy z modelu, prawdopodobnie najlepiej będzie najpierw usunąć usuwanie poprawnie ...

Również, ModelTest może pomóc w wykryciu problemów z modelami Qt.

4

Jeśli użytkownik jest naprawdę zaczyna od nowa z nowym zestawem danych, to ma sens dla mnie po prostu usunąć stary model i stworzyć nowe. Prosty, skuteczny i dopasowany do tego, co robi użytkownik.

5

nie wiem w jaki sposób to naprawdę „lepiej”, ale usunięcie wszystkich wierszy może być dość prosta funkcja coś takiego:

void MyModel::Clear(void) 
{ 
    // remove all data from internal data structures 
    ... 

    // Call QAbstractItemModel::reset to ensure any views know that everything has changed. 
    reset(); 
} 
+3

to nie jest wystarczające. QT oferuje beginResetModel i endResetModel, które powinny zostać użyte – IceFire

Powiązane problemy