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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено] QTableView - перейти к последней записи в базе  (Прочитано 4294 раз)
Alex_C
Гость
« : Май 03, 2012, 18:06 »

Есль QSqlTableModel+QTableView. После сортировки, в зависимости от направления сортировки, необходимо перейти или к первой, или к последней записи.
Пытался делать так

Код:
    if(lastSortOrder == Qt::AscendingOrder)
        setCurrentIndex(model()->index(model()->rowCount() - 1, 1));
    else
        setCurrentIndex(model()->index(0, 1));

    qDebug() << model()->rowCount();

Однако model()->rowCount() выдает 256, хотя в таблице несколько тысяч строк. И соответственно переходит на 256 строку, а на последнюю. База SQLite.

« Последнее редактирование: Май 03, 2012, 21:44 от Alex_C » Записан
Странник
Гость
« Ответ #1 : Май 03, 2012, 18:34 »

canFetchMore() и fetchMore() смотрите.
Записан
Alex_C
Гость
« Ответ #2 : Май 03, 2012, 21:43 »

Спасибо большое! Пользуясь Вашей подсказкой нашел вот это:

Select в QSqlTableModel для SQLite запрашивает только первые 256 рядов. Чтобы полностью заполнить модель надо делать так:

model.select();
while(model.canFetchMore())
        model.fetchMore();

Думаю это поможет не только мне!
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Май 04, 2012, 09:06 »

Только лучше:
Код
C++ (Qt)
while(model.canFetchMore()) {
       model.fetchMore();
       QCoreApplication::processEvents ();
}
 
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Alex_C
Гость
« Ответ #4 : Май 04, 2012, 10:58 »

Только лучше:
Код
C++ (Qt)
while(model.canFetchMore()) {
       model.fetchMore();
       QCoreApplication::processEvents ();
}
 

Спасибо за замечание - принято!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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