Qt: убрать модель из вида

Обычно мы устанавливаем модель представления в Qt так:
view->setModel(model);

Но есть ли способ Удалить модель из поля зрения? Я имею в виду буквально оставить представление пустым, как будто оно было только что создано, и для него еще не было установлено никакой модели.

Если вы спросите меня причина из моего желания, у меня есть довольно похожий случай, как в этом парне сообщение. И когда первое представление не имеет выбора или оно пустое / недействительное / что угодно, я хочу, чтобы второе представление показывало буквально ничего: без заголовков, столбцов, мусорных данных. В этом случае вполне разумно удалить модель из вида.

Я попробовал грязный хак:
*view = QTableView();
Но Qt позаботился о таких злых вещах и сделал operator= частный.

1

Решение

Из источника QAbstractItemView::setModel():

d->model = (model ? model : QAbstractItemModelPrivate::staticEmptyModel());

Похоже, если вы передадите нулевой указатель, он будет внутренне использовать какой-то фиктивный запасной вариант модели. Таким образом, нулевые указатели поддерживаются, и это верный способ «сбросить» текущую модель.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]