Qt-очистка содержимого QTableView [закрыто]

Я работаю в Qt 4.7 и имею диалог, содержащий (среди прочего, несвязанные вещи) QTableView и QButton. При нажатии кнопки QButton необходимо очистить все данные из QTableView. Я не уверен, как это компенсировать. Я некоторое время искал в интернете, но не нашел ничего слишком полезного. Основываясь на том, что я нашел здесь, Я попытался это:

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

однако это дало следующую ошибку:

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

есть еще один способ сделать это, который я случайно упустил? Спасибо!

2 ответов


функции myTableView->model() возвращает QAbstractItemModel, который не содержит clear() метод. Вы должны вызвать метод clear вашей модели. Если у вас есть модель, как:

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

вызов clear должен удалить все данные из модели, стирая представление, как следствие, как это предусмотрено, чтобы показать данные в связанной модели:

model->clear();

Я бы сбросил модель (Если вам не нужны данные в модели позже). Подкласс вашей модели (если она пользовательская) и реализовать слот, как

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

просто проверить этой.