![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
512es |
![]()
Сообщение
#1
|
Участник ![]() ![]() Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
Всем привет!
Помогите заставить работать QTableView & QSqlTableModel как надо. Может кто уже сталкивался с такой проблемой.. Модель таблицы:
Добавляю новую запись:
Вот так, после добавления записи, курсор переходит на нужную строку и ячейка в режиме редактирования. Проблема: Но стоит только нажать интер, строка записывается в базу и таблица обновляется. Курсор переходит на первую строку. Кроме того, записей в таблице много и подгружаются они не все. Что мешает функции поиска по таблице. Должно работать так: Добавляем строку, она сразу сабмитится в базу с дефолтными значениями. Курсор переходит на добавленную строку и сразу в режим редактирования. При редактировании ячеек, курсор остаётся на той же строке, а не убегает в начало. Таблица подгружается вся, а не часть её, дабы работал быстрый поиск по всей таблице. Как я делаю: Подгружаю таблицу целиком вот так:
Дефолтные значения задаю так:
Сообщение отредактировал 512es - 5.11.2009, 22:07 |
|
|
![]() |
512es |
![]()
Сообщение
#2
|
Участник ![]() ![]() Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
Решил проблему вот так:
Сегодня заметил что нужную строку всётаки выделяет, но скролл к ней не успевает почему то переходить. Поэтому добавил scrollTo(index), так работает. А ещё, не получалось перехватить автосаммит, чтобы добавить функцию перехода на нужную строку после записи в базу. Поэтому сделал кнопку "Сохранить изменения"=)
Решение немного кривовато, но работает как надо =) А спустя несколько часов набрёл на одну тему, которая решила эту проблему просто идеально!) http://www.forum.crossplatform.ru/index.ph...ost&p=21236 Большущее спасибо mva!) Таблица целиком подгружается в память один раз. А после, добавляемые строки вносятся по одной через низкоуровневую функцию updateRowInTable(). В результате не надо загружать таблицу заново, возиться с скролами и индексами) ЗЫ: Вот ещё по этой теме: http://www.prog.org.ru/index.php?topic=10765 Сообщение отредактировал 512es - 5.11.2009, 22:08 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 18.2.2025, 11:19 |