Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Alex_C от Май 03, 2012, 18:06



Название: [Решено] QTableView - перейти к последней записи в базе
Отправлено: 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.



Название: Re: QTableView - перейти к последней записи в базе
Отправлено: Странник от Май 03, 2012, 18:34
canFetchMore() и fetchMore() смотрите.


Название: Re: QTableView - перейти к последней записи в базе
Отправлено: Alex_C от Май 03, 2012, 21:43
Спасибо большое! Пользуясь Вашей подсказкой нашел вот это:

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

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

Думаю это поможет не только мне!


Название: Re: [Решено] QTableView - перейти к последней записи в базе
Отправлено: Пантер от Май 04, 2012, 09:06
Только лучше:
Код
C++ (Qt)
while(model.canFetchMore()) {
       model.fetchMore();
       QCoreApplication::processEvents ();
}
 


Название: Re: [Решено] QTableView - перейти к последней записи в базе
Отправлено: Alex_C от Май 04, 2012, 10:58
Только лучше:
Код
C++ (Qt)
while(model.canFetchMore()) {
       model.fetchMore();
       QCoreApplication::processEvents ();
}
 

Спасибо за замечание - принято!