Russian Qt Forum
Ноябрь 24, 2024, 06:27
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Базы данных
>
переход на измененную запись в QTableView
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: переход на измененную запись в QTableView (Прочитано 5223 раз)
mokynis
Самовар
Offline
Сообщений: 176
переход на измененную запись в QTableView
«
:
Январь 22, 2010, 15:34 »
Замучился уже-помогите сделать проще. Имеется форма, на ней QTableView (tab_view), связанная с SqlQueryModel (model). В модель выбраны данные из кучи таблиц, поэтому редактирую в lineEdit'ах и ComboBox'ах, расположенных на форме. Задача- после редактирования (или удаления) "подсветить" в tab_view ту запись, которая редактировалась (или предыдущую, если запись удалялась). Дело в том, что модель заполняется отсортированными (причем может быть сортировка по разным полям) данными. После поисков где только можно получилось что-то заумное:
после изменения текущей строки форма подает сигнал с аргументом=нужному id
сигнал принимает слот модели, где перебираются все строки, пока не получится data(index)==id
после этого модель подает сигнал с № записи в текущей выборке
его принимает форма и "подсвечивает" нужную строку tab_view->selectRow(number)
Может, как-то по-проще можно? А то ужас какой-то вышел
(Qt4.3.2)
Записан
QT4, Qt5, Qt6 Debian, ArchLinux
crossly
Гость
Re: переход на измененную запись в QTableView
«
Ответ #1 :
Январь 23, 2010, 14:56 »
может просто перед обновлением запоминать QModelIndex ..... после обновления переходить на него...
Записан
DS_tm
Гость
Re: переход на измененную запись в QTableView
«
Ответ #2 :
Январь 23, 2010, 16:35 »
Можно отлавливать сигнал dataChanged от модели, и по измененным индексам подсвечивать вьюху.
Записан
NicK
Гость
Re: переход на измененную запись в QTableView
«
Ответ #3 :
Январь 24, 2010, 21:28 »
Вот так я выделяю ряд(intLastKnownSelectedRow) и перехожу к нему в QTreeView. В QTableView принцип тот же.
Цитировать
for (int i=0;i<model->columnCount();++i) TV->selectionModel()->select(model->index(intLastKnownSelectedRow, i), QItemSelectionModel::Select);
TV->selectionModel()->setCurrentIndex(model->index(intLastKnownSelectedRow, 0),QItemSelectionModel::Select);
TV->scrollTo(model->index(intLastKnownSelectedRow,0),QAbstractItemView::PositionAtCenter);
Записан
mokynis
Самовар
Offline
Сообщений: 176
Re: переход на измененную запись в QTableView
«
Ответ #4 :
Январь 26, 2010, 09:06 »
спасибо за подсказки, но в моем случае надо подсвечивать строку с неизвестно каким индексом: может быть не только изменение, но и вставка новой записи, а модель обновляется в зависимости от заранее установленной сортировки=> измененная запись тоже может оказаться где угодно. Ладно, буду делать свое корявое выделение.
Записан
QT4, Qt5, Qt6 Debian, ArchLinux
DS_tm
Гость
Re: переход на измененную запись в QTableView
«
Ответ #5 :
Январь 26, 2010, 11:54 »
Цитата: mokynis от Январь 26, 2010, 09:06
спасибо за подсказки, но в моем случае надо подсвечивать строку с неизвестно каким индексом: может быть не только изменение, но и вставка новой записи, а модель обновляется в зависимости от заранее установленной сортировки=> измененная запись тоже может оказаться где угодно. Ладно, буду делать свое корявое выделение.
Для вставки можно также перехватывать rowsInserted. На счет сортировки, Вы не правы, сортировка QTableView осуществляеться прозрачно, тоесть QItemSelectionModel спокойно подсвечивает нужные индексы, полученные от модели. Если же используеться прохси модель, то корректный индекс можно получить с помощью функций mapToSource/mapFromSource.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...