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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSortFilterProxyModel + QAbstractItemDelegate  (Прочитано 6180 раз)
fearn0t
Гость
« : Декабрь 14, 2009, 17:09 »

Всем Привет =))
есть
1ое)
Код
C++ (Qt)
productModel = new QSqlRelationalTableModel(this)
2ое)
Код
C++ (Qt)
proxyModel = new QSortFilterProxyModel
proxyModel->setSourceModel(productModel)
   
3ье)
Код
C++ (Qt)
productView = new QTableView
productView->setModel(proxyModel)
productView->setItemDelegate(new QSqlRelationalDelegate(this))

Смысл такой, что делегат не работает с прокси-моделью. Какие возможные пути решения?
Записан
fearn0t
Гость
« Ответ #1 : Декабрь 14, 2009, 20:45 »

Еще проблема в том, что QTableView + QSqlRelationalDelegate не обновляют свой вид из sql
помогите пожалуйста, мне уже сдавать на днях надо =(
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #2 : Декабрь 14, 2009, 21:36 »

Не хочешь разбираться сам так купи курсяк за деньги - че мозг парить то ?

P.S. тут что форум помощи студентам-лентяям?
Записан
fearn0t
Гость
« Ответ #3 : Декабрь 14, 2009, 22:08 »

Что так агрессивно то? =))
Отписался на форуме и параллельно сам ищу решение.
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #4 : Декабрь 14, 2009, 23:06 »

сори за агрессивность - ты ищешь ответы на то что описано в документации и не должно вызывать никаких вопросов - ты просто спрашиваешь - эй мужики дай те мне рабочий кусок кода! где твоя проблема то?
Записан
fearn0t
Гость
« Ответ #5 : Декабрь 14, 2009, 23:51 »

Книжка Шлее, Книжка Бланшета + assistant и я не нашел ответов. Я бы не стал спрашивать, если бы знал где искать.
опишу вкратце:
productView->setModel(productModel) - делегат(выпадающий список) работает
productView->setModel(proxyModel) - делегат не работает.
Понятия не имею в чем дело. перерыл все методы. С этим можно смириться, просто хотелось сделать красиво.

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

А вторая проблема в том, что как мне кажется модель не обновляется.... Происходит все так:
1) захожу в диалоговое окно
2) заношу новые данные в таблицу
3) данные заносятся (!)
4) и в QSqlRelationalDelegate  не отображается новое значение.
уже все перепробывал что смог найти:
productView->update();
productView->reset();
productModel->submitAll();
QSqlDatabase::database().commit();

И непонятно то, что я писал очень похоже на StuffManager из книги Бланшета, который рабочий....


Записан
MoPDoBoPoT
Гость
« Ответ #6 : Декабрь 15, 2009, 00:30 »

В ассистенте написано, что QSqlRelationalDelegate предназначен для QSqlRelationalTableModel. Посмотрев в исходники, можно в этом убедиться.

А вторая проблема в том, что как мне кажется модель не обновляется.... Происходит все так:
1) захожу в диалоговое окно
2) заношу новые данные в таблицу
3) данные заносятся (!)
4) и в QSqlRelationalDelegate  не отображается новое значение.
Что-то не очень понятно. Ты в отдельном окошке заносишь новую запись по средствам SQL-запроса (INSERT INTO...)? Если да, то надо обновить данные в модели, чтобы увидеть новую запись:
Код
C++ (Qt)
productModel->select();
 
(возможно надо будет заново установить отношение(QSqlRelation), сейчас нет возможности проверить)
Записан
fearn0t
Гость
« Ответ #7 : Декабрь 15, 2009, 10:36 »

на счет первого понятно.
на счет второго:
а) заношу данные методом  mapper->submit()
эти данные записываются в базу.
б)
Код
C++ (Qt)
productModel->select();
productView->setItemDelegate(new QSqlRelationalDelegate(this));
прописал и 0 эффекта.
в) У меня есть главная таблица.
представим что в ней отображается значение_1 из таблицы_2 посредством QSqlRelationalDelegate.
открываю диалоговое окно редактирования таблицы_2 и изменяю значение_1.
закрываю диалоговое окно и смотрю на главную таблицу - значение_1 визуально изменилось.
раскрываю выпадающий список и измененное значение_1 пропадает =(



Записан
fearn0t
Гость
« Ответ #8 : Декабрь 15, 2009, 16:06 »

сделал интерфейс по-другому, но все равно было бы неплохо получить ответ =))
Записан
fearn0t
Гость
« Ответ #9 : Декабрь 22, 2009, 00:48 »

неужели ни у кого даже мыслей нет. Я в qt мало программирую и не разобрался с возможностями. Мне надо свой делегат делать? я вообще без понятия... скажите хоть в какую сторону копать.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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