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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: поиск по QTableView  (Прочитано 6530 раз)
admsasha
Гость
« : Сентябрь 30, 2009, 11:03 »


делаю так

Код:
    table = new QTableView();
    model = new QSqlQueryModel;
    table->setModel(model);

void frmFind::find(QString text) {
    QString tmp;

    QRegExp rx("^"+text+"");


    for (int i=0;i<table->model()->rowCount();i++){
        tmp = table->model()->data(table->model()->index(i,0)).toString();
        if (rx.exactMatch(tmp)){
            table->scrollTo(table->model()->index(i+10,0));
            table->setCurrentIndex(table->model()->index(i,0));
            return ;
        }
    }

    return ;
}

Но в базе ~5000 записей, и поиск осуществляется достаточно долго. Какой еще есть способ ?


Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #1 : Сентябрь 30, 2009, 18:36 »

Данные отфильтрованы? Если да, то есть много алгоритмов поиска.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
admsasha
Гость
« Ответ #2 : Октябрь 01, 2009, 02:15 »

Данные отфильтрованы? Если да, то есть много алгоритмов поиска.
sqlQuery="SELECT p1,p2,p3 from table1"
model->setQuery(sqlQuery,QSqlDatabase::database());
table->setModel(model);

Записан
admsasha
Гость
« Ответ #3 : Октябрь 01, 2009, 05:50 »

Код:
    QString text="mytext";
    QModelIndexList match;
    QModelIndex firstMatch;
    match = table->model()->match(table->model()->index(0,0),Qt::DisplayRole, text);
    firstMatch=match.value(0);
    if (firstMatch.isValid()) {
        return firstMatch;
    }
Вот как сделал, работает во много раз быстрее.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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