Russian Qt Forum

Qt => Model-View (MV) => Тема начата: majatu от Июль 20, 2009, 13:32



Название: Модель (более 1000 строк) функция match
Отправлено: majatu от Июль 20, 2009, 13:32
Есть модель, в которой более 1000 строк, пытаюсь сначала загрузить модель, потом нужно произвести поиск по id и подсветить строку с соответстующим id. Когда id равен допустим 700, то функция match говорит, что такого id не найдено. В чем может быть проблема?

Вот код

Код:

    model=new QSqlRelationalTableModel(this);
    model->setTable("city");
    model->setRelation(2, QSqlRelation("region","id","title"));
    model->setSort(0, Qt::AscendingOrder);
    model->setFilter("city.visible=1");
    model->select();


...

m_ui->tableView->setModel(model);

...


if(current)
    {
        QModelIndexList indexList = model->match(model->index(0,0), Qt::DisplayRole, current, 1, Qt::MatchExactly);

        qDebug()<<indexList.count();

        if(indexList.count())
        {

            QModelIndex index=indexList.first();
            m_ui->tableView->setCurrentIndex(index);
            this->current_row=index.row();

            QTimer::singleShot(0,this,SLOT(updateScroll()));
        }
    }


p.s. я заметил, что модель грузит сначала почему-то только первые 255 строк


Название: Re: Модель (более 1000 строк) функция match
Отправлено: Пантер от Июль 21, 2009, 06:19
Почитай в ассистенте про
bool QAbstractItemModel::canFetchMore
void QAbstractItemModel::fetchMore
и все поймешь. ;)


Название: Re: Модель (более 1000 строк) функция match
Отправлено: majatu от Июль 21, 2009, 10:13
ок, уже допер, сделал модель с такой функцией

Код:
void ListModel::refresh()
{
    setQuery(this->query());
    while( canFetchMore() )
        fetchMore();
}