2014-04-07 18 views
6

Pracuję w Qt 4.7 i mam okno dialogowe zawierające (między innymi, niezwiązane ze sobą rzeczy) QTableView i QButton. Po kliknięciu przycisku Q należy wyczyścić wszystkie dane z QTableView. Nie jestem pewien, jak to zrobić. Rozglądałem się przez jakiś czas w Internecie, ale nie znalazłem niczego zbyt pomocnego. Na podstawie tego, co znalazłem here, próbowałem to:Qt - Czyszczenie zawartości QTableView

void MyClass::on_myButton_clicked() { myTableView->model()->clear(); }

to jednak dało się następujący błąd:

error: C2039: 'clear' : is not a member of 'QAbstractItemModel' 

Czy istnieje inny sposób na to, że jestem przypadkowo wychodzi? Dzięki!

Odpowiedz

7

Funkcja myTableView->model() zwraca QAbstractItemModel, która nie zawiera metody clear(). Powinieneś zadzwonić do jasnej metody swojego modelu. Jeśli masz model takiego:

QStandardItemModel * model= new QStandardItemModel(2, 4); 

Wywołanie jasne powinno usunąć wszystkie dane z modelu wymazywanie pogląd jako konsekwencja jak to jest przewidziane, aby pokazać dane w powiązanego modelu

model->clear(); 
7

Zresetowałbym model (jeśli później nie potrzebujesz danych w modelu). podklasy modelu (jeśli jest to zwyczaj jeden) i wdrożenie gniazdo jak

void clear(){ 
    this->beginResetModel(); 
    ... // clear the content of your model here 
    this->endResetModel(); 
{ 

Wystarczy sprawdzić this.

Powiązane problemy