Russian Qt Forum
Ноябрь 23, 2024, 23:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Очистить QSqlQueryModel и QSqlTableModel  (Прочитано 7063 раз)
pokidoff
Гость
« : Март 28, 2011, 14:29 »

Как очистить вышеприведенные типы моделей от данных? Clear() не катит - связанный tableView не перерисовывается, а после принудительной перерисовки остается "каркас" таблицы из пустых ячеек и пронумерованных строк и столбцов. Хотелось бы либо избавиться от данных, оставив заголовки, либо удалить все вместе с заголовками.
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #1 : Март 28, 2011, 19:47 »

Код
C++ (Qt)
int count = model->columnCount();
for (int i = 0; i < count; ++i)
model->removeColumn(0);
 
Записан

kubuntu/Win7/x64/NetBeans
pokidoff
Гость
« Ответ #2 : Март 29, 2011, 08:28 »

Мдааа...костылик В замешательстве
И все равно QTableView не очищается, пока не кликнешь по нему. Да и разметка столбцов и строк в QTableView остается. Ну не реагирует он на очистку модели.
« Последнее редактирование: Март 29, 2011, 09:07 от pokidoff » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Март 29, 2011, 09:00 »

Какой-то костыльный костылик. Улыбающийся
Можно еще невалидный QSqlQuery установить.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
pokidoff
Гость
« Ответ #4 : Март 29, 2011, 09:21 »

В QSqlTableModel и QSqlRelationalTableModel метод setQuery - protected. Я проверил - метод clear()  модели отрабатывает на зубок, но почему-то не отсылаются сигналы в View об изменениях в модели...или view их не обрабатывает.... Мистика...
« Последнее редактирование: Март 29, 2011, 09:27 от pokidoff » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Март 29, 2011, 09:27 »

Я QSqlQueryModel имел ввиду.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
pokidoff
Гость
« Ответ #6 : Март 29, 2011, 09:42 »

Собственно проблема мутирует. Как заставить перерисоваться QTableView при очистке модели? Было обнаружено, что он реагирует на установку свежей чистой пустой модели, но даже если сделать следующее:
Код:
//сейчас модель заполнена
tableView->setModel(model);

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

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

А каждый раз удалять модель, а потом заново ее создавать и заполнять - не айс
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #7 : Март 29, 2011, 09:46 »

А попробуй tableView->setModel (0)
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
pokidoff
Гость
« Ответ #8 : Март 29, 2011, 09:49 »

Действительно, только что попробовал.. Конечно, оно не прибавляет красивости коду, ну хоть какое-то решение. Грустный
Спасибо за помощь.
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #9 : Март 29, 2011, 15:28 »

Мдааа...костылик В замешательстве
И все равно QTableView не очищается, пока не кликнешь по нему. Да и разметка столбцов и строк в QTableView остается. Ну не реагирует он на очистку модели.
У меня всё нормально очищается без всяких кликов и никаких разметок не остаётся. Иначе бы не предлагал.
Записан

kubuntu/Win7/x64/NetBeans
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.074 секунд. Запросов: 23.