Обычно мы устанавливаем модель представления в Qt так:
view->setModel(model);
Но есть ли способ Удалить модель из поля зрения? Я имею в виду буквально оставить представление пустым, как будто оно было только что создано, и для него еще не было установлено никакой модели.
Если вы спросите меня причина из моего желания, у меня есть довольно похожий случай, как в этом парне сообщение. И когда первое представление не имеет выбора или оно пустое / недействительное / что угодно, я хочу, чтобы второе представление показывало буквально ничего: без заголовков, столбцов, мусорных данных. В этом случае вполне разумно удалить модель из вида.
Я попробовал грязный хак:
*view = QTableView();
Но Qt позаботился о таких злых вещах и сделал operator=
частный.
Из источника QAbstractItemView::setModel()
:
d->model = (model ? model : QAbstractItemModelPrivate::staticEmptyModel());
Похоже, если вы передадите нулевой указатель, он будет внутренне использовать какой-то фиктивный запасной вариант модели. Таким образом, нулевые указатели поддерживаются, и это верный способ «сбросить» текущую модель.
Других решений пока нет …