2014-04-07 15 views
6

Ich arbeite in Qt 4.7, und habe einen Dialog, der (neben anderen Dingen) eine QTableView und eine QButton enthält. Wenn auf den QButton geklickt wird, muss er alle Daten von QTableView löschen. Ich bin mir nicht sicher, wie ich dazu beitragen soll. Ich habe mich eine Weile online umgesehen, aber nichts zu hilfreich gefunden. Nach dem, was ich gefunden here, habe ich versucht, dies:Qt - Löschen von QTableView Inhalt

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

Doch dieser gab die folgenden Fehler:

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

Gibt es eine andere Möglichkeit, dies zu tun, dass ich zufällig bin mit Blick auf? Vielen Dank!

Antwort

7

Die Funktion myTableView->model() gibt eine QAbstractItemModel zurück, die die Methode clear() nicht enthält. Sie sollten die klare Methode Ihres Modells aufrufen. Wenn Sie ein Modell wie:

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

klar aufrufen sollten alle Daten aus dem Modell löschen Sie die Ansicht als Folge gelöscht, wie es vorgesehen ist, Daten in dem zugehörigen Modell zu zeigen:

model->clear(); 
7

Ich würde das Modell zurücksetzen (wenn Sie die Daten im Modell später nicht benötigen). Unterklasse Ihr Modell (wenn es sich um eine Sonderanfertigung ist) und implementieren einen Schlitz wie

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

Nur this überprüfen.