crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Событие изменения выделения в QListView
Begemot
  опции профиля:
сообщение 21.5.2010, 18:21
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 13
Регистрация: 15.5.2010
Пользователь №: 1718

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




Репутация:   0  


Чувствую себя полным идиотом :) но уже больше часа не могу найти как отловить момент изменения текущий выбранной строки в QListView. Использую QSqlRelationalTableModel, все вроде просто

Для Q*Widgets есть сигнал currentItemChanged, но для view нету, как быть?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MoPDoBoPoT
  опции профиля:
сообщение 21.5.2010, 18:32
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 172
Регистрация: 7.5.2009
Из: Москва
Пользователь №: 738

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




Репутация:   9  


QItemSelectionModel *QAbstractItemView::selectionModel() + void QItemSelectionModel::currentChanged( const QModelIndex & current, const QModelIndex & previous ) [signal]
м?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Begemot
  опции профиля:
сообщение 21.5.2010, 23:03
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 13
Регистрация: 15.5.2010
Пользователь №: 1718

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




Репутация:   0  



Спасибо, оно самое :)

Может пользуясь случаем еще подскажите как более правильно поступить. Задача такая надо вывести список (поэтому использую QListView), дальше в этом списке будет поддержка фильтрации и сортировки. Но список должен быть кастомным - то есть содержимое каждой строки это конкатенация данных их двух полей базы данных. причем второе поле это индекс связанной таблицы... + при изменении выделения в списке нужно знать ID выбранной строки, что бы корректно отразить данные в соседних элементах.

Если я правильно понимаю мне придется писать свой наследник делегата, что бы получать данных из двух полей форматировати и хитро отображать их . А как быть с моделью данных? Я пока вижу два пути - использовать стандартную QSqlRelationalTableModel и каким-то образом получать из нее текст двух полей + id когда надо или писать свою собственную модель которая будет сама вытягивать с базы все данные хранить их в 2х списках строк\векторе и отдавать данные в зависимости от роли.

Посоветуйте какой из подходов более правильный, или может один просто невозможен?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Begemot
  опции профиля:
сообщение 22.5.2010, 9:30
Сообщение #4


Студент
*

Группа: Новичок
Сообщений: 13
Регистрация: 15.5.2010
Пользователь №: 1718

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




Репутация:   0  


Попробовал реализовать первый путь, с использованием QSqlRelationalTableModel и ручным получением данных, работает, пока на нем и остановлюсь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MoPDoBoPoT
  опции профиля:
сообщение 22.5.2010, 13:02
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 172
Регистрация: 7.5.2009
Из: Москва
Пользователь №: 738

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




Репутация:   9  


Как вариант, можно из БД в модель тянуть 2 столбца, а отображать только нужный (QListView::setModelColumn(int column)). Этот "индекс связанной таблицы" (внешний ключ, как я понял) будет браться из соседнего столбца, или можно к модели прикрутить для этого специальный метод типа foreignKey(int row).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 19.4.2024, 6:15