crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Очистка Headerov в QSqlQueryModel + QTableView
defnull
  опции профиля:
сообщение 18.6.2009, 1:54
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 49
Регистрация: 1.5.2008
Пользователь №: 165

Спасибо сказали: 0 раз(а)




Репутация:   1  


Из базы данных загражую данные в QSqlQueryModel и они отображаются в QTableView. Проблема в том, что за один раз могут прийти данные а на следующий раз уже нет.. очистка строк и колонок приводит к тому что хедеры остаются. Встал вопрос как очистить модель полностью? вместе с хедерами?

Долго промучившись дошёл до следующего:

int b= model->columnCount();

for (int i =0; i< b; i++)
     model->setHeaderData(i, Qt::Horizontal, tr(""))
model->removeColumns(0, B, QModelIndex());

int b= model->rowCount();

for (int i =0; i< b; i++)
     model->setHeaderData(i, Qt::Vertical, tr(""))
model->removeRows(0, B, QModelIndex());


Но даже при таком раскладе удаляется не всё а только горизонтальные хедеры=((( Подскажите пожалуйста как это реализовать? неужели у модели нет метода очистки её полностью??

Сообщение отредактировал defnull - 18.6.2009, 1:55
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 18.6.2009, 2:20
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Запрос новый установи и всё.


Цитата(defnull @ 18.6.2009, 5:54) *
Проблема в том, что за один раз могут прийти данные а на следующий раз уже нет.. очистка строк и колонок приводит к тому что хедеры остаются.
тут вообще не понял.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_он же.._*
сообщение 18.6.2009, 14:32
Сообщение #3





Гости








    


Напутал я.. объясню по другому.. в базе данных есть сервера и запчасти. Если мы делаем просмотр запчасти то в QTableView ничего отображаться не должно(по идее даже хедеры), а вот если просматриваем сервер, то в этом QTableView надо поместить запчасти. (заполнить модель, тоесть выполняется model->exec()). Так вот фишка в том, что представление изначально настроена на модель.
Каждый раз я вначале очищаю модель, потом узнаю является ли загружаемая деталь сервером или обычной запчастью и только потом выполняю запрос к модели. И у модели хедеры обновляются если я выполняю запрос. Мне нужно чтобы хедеры очищались независимо от того буду я загружать данные или нет
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 18.6.2009, 15:30
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


всё равно ничего не понял.

Предварительно объявил модель и назначил её представлению:
model = new QSqlQueryModel;
view->setModel(model);


В нужном месте устанавливаешь в модель запрос:
QString qstr = "SELECT ... FROM .... "; // свой запрос
QSqlDatabase db = QSqlDatabase::database(); // соединение с БД по умолчанию
model->setQuery(qstr, db); // устанавливаем запрос


когда нужно очистить модель, только для того, чтобы пользователь увидел пустое представление, вместо последней строки предыдущего фрагмента кода пишешь:
model->setQuery(QString(), db); // устанавливаем пустой запрос
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_он же.._*
сообщение 18.6.2009, 16:12
Сообщение #5





Гости








    


Всё так и делаю) Тоесть чтобы очистить хедеры надо передать пустой запрос к БД... странно это как-то, недостаток выбранной модели?
Спасибо поробую!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 18.6.2009, 16:19
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Гость_он же.._* @ 18.6.2009, 20:12) *
Тоесть чтобы очистить хедеры надо передать пустой запрос к БД... странно это как-то, недостаток выбранной модели?
конкретная модель здесь не причём. При установке нового источника данных (для QSqlQueryModel это сам SQL-запрос), модель шлёт представлениям сигнал "Сброс", чтобы они очистились и зпросили у модели новые данные.

Напрактике нет нужды показывать пользователю пустое представление.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.4.2024, 21:08