Russian Qt Forum

Qt => Model-View (MV) => Тема начата: pokidoff от Март 28, 2011, 14:29



Название: Очистить QSqlQueryModel и QSqlTableModel
Отправлено: pokidoff от Март 28, 2011, 14:29
Как очистить вышеприведенные типы моделей от данных? Clear() не катит - связанный tableView не перерисовывается, а после принудительной перерисовки остается "каркас" таблицы из пустых ячеек и пронумерованных строк и столбцов. Хотелось бы либо избавиться от данных, оставив заголовки, либо удалить все вместе с заголовками.


Название: Re: Очистить QSqlQueryModel и QSqlTableModel
Отправлено: serg_hd от Март 28, 2011, 19:47
Код
C++ (Qt)
int count = model->columnCount();
for (int i = 0; i < count; ++i)
model->removeColumn(0);
 


Название: Re: Очистить QSqlQueryModel и QSqlTableModel
Отправлено: pokidoff от Март 29, 2011, 08:28
Мдааа...костылик :-\
И все равно QTableView не очищается, пока не кликнешь по нему. Да и разметка столбцов и строк в QTableView остается. Ну не реагирует он на очистку модели.


Название: Re: Очистить QSqlQueryModel и QSqlTableModel
Отправлено: Пантер от Март 29, 2011, 09:00
Какой-то костыльный костылик. :)
Можно еще невалидный QSqlQuery установить.


Название: Re: Очистить QSqlQueryModel и QSqlTableModel
Отправлено: pokidoff от Март 29, 2011, 09:21
В QSqlTableModel и QSqlRelationalTableModel метод setQuery - protected. Я проверил - метод clear()  модели отрабатывает на зубок, но почему-то не отсылаются сигналы в View об изменениях в модели...или view их не обрабатывает.... Мистика...


Название: Re: Очистить QSqlQueryModel и QSqlTableModel
Отправлено: Пантер от Март 29, 2011, 09:27
Я QSqlQueryModel имел ввиду.


Название: Re: Очистить QSqlQueryModel и QSqlTableModel
Отправлено: pokidoff от Март 29, 2011, 09:42
Собственно проблема мутирует. Как заставить перерисоваться QTableView при очистке модели? Было обнаружено, что он реагирует на установку свежей чистой пустой модели, но даже если сделать следующее:
Код:
//сейчас модель заполнена
tableView->setModel(model);

//очищаем модель
model->clear();

//заново ее устанавливаем
tableView->setModel(model);
, то все равно TableView не очищается.

А каждый раз удалять модель, а потом заново ее создавать и заполнять - не айс


Название: Re: Очистить QSqlQueryModel и QSqlTableModel
Отправлено: Пантер от Март 29, 2011, 09:46
А попробуй tableView->setModel (0)


Название: Re: Очистить QSqlQueryModel и QSqlTableModel
Отправлено: pokidoff от Март 29, 2011, 09:49
Действительно, только что попробовал.. Конечно, оно не прибавляет красивости коду, ну хоть какое-то решение. :(
Спасибо за помощь.


Название: Re: Очистить QSqlQueryModel и QSqlTableModel
Отправлено: serg_hd от Март 29, 2011, 15:28
Мдааа...костылик :-\
И все равно QTableView не очищается, пока не кликнешь по нему. Да и разметка столбцов и строк в QTableView остается. Ну не реагирует он на очистку модели.
У меня всё нормально очищается без всяких кликов и никаких разметок не остаётся. Иначе бы не предлагал.