crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Автопоиск + QlistView (Поиск и выделение элементов списка)
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
qp Дата 31.8.2010, 12:01
  Ещё есть 2 вопроса по поводу могего представления.

Вопрос первы: Как сделать так, чтобы маркер (который перемещается по списку в зависимости от значения в поле ввода) был синего цвета ? В данный момент когда в фокусе поле ввода, маркер серый (список не в фокусе).

Второй вопрос: Как сделать так, чтобы в представление "влезало" только целое колличество строк? Сейчас из-за границы окна виднеются хвостики не помещающейся строки... Нужно сделать так чтобы отображалось столько строк сколько влезло целиком (с учётом того что окно можно растягивать)...
qp Дата 27.8.2010, 11:52
  ОГРОМНОЕ спасибо!!! Список подгужается полностью, и поиск работает отлично.

ps: За оформление сори, буду иметь в виду
panter_dsd Дата 27.8.2010, 11:28
 
while (model->canFetchMore ()) {
    model->fetchMore ();
}

Это подгрузит полный список.
Пользуйся тегом code для форматирования.
qp Дата 27.8.2010, 10:48
  Добрый день всем!
Есть у меня небольшое приложение. Окно, со списком (QlistView) и строкой поиска. Задача в следующем. Неоходимо при вводе значения в поле QLineEdit производился поиск(по сигналу textChanged) соответствия из списка и если оно найдено ставить на него выделение (Вобщем самый обыкновенный автопоиск по списку). В общем и целом задачу я решил, вот только работает не правильно: автопоиск работает ТОЛЬКО до буквы "D" (у меня словарь). Далее не ищет. Список при старте приложения подгружается на полностью (как раз до буквы D с копейками) если его проскролить то он подгружается, но поиск всё равно не работает. Мне кажется проблема в этом ...

Итак что имею:

Вот так я получаю список:

void Database::getWordList(QListView *listView)
{
    model = new QSqlQueryModel(0);
    model->setQuery("SELECT key FROM wordlist");

    //Заполняем QStringList данными нашей модели
    for(int i=0; i<model->rowCount(); i++)
    {
        QSqlRecord record = model->record(i);
        listNames.append(record.value("key").toString());
    }
    listView->setModel(model);

    //Устанавливаем Выделение на первую строку
    listView->selectionModel()->setCurrentIndex(model->index(0,0), QItemSelectionModel::ClearAndSelect);

}; //getWordList(QListView *listView)

//listNames это QStringList listNames; для хранения строк модели. объявлена ранее.

Вот так реализована вынкция автопоиска (честно подсмотрена и немного исправлена):

void Database::findItem(QString text, QListView *myView)
{
    QString find="^"+text;      //Начинается с 'text'
    const QRegExp rw (find);
    //Если строка пустая, помещаем выделение на первый пункт.
    if(text.isEmpty())
    {
        myView->selectionModel()->setCurrentIndex(model->index(0,0), QItemSelectionModel::ClearAndSelect);
        return;
    }


    // Ниже метод listNames.filter возвращает список удовлетворяющих регэкспу слов
    if(listNames.filter(rw).isEmpty()) return;
    QModelIndexList indexList = model->match(model->index(0, 0), Qt::DisplayRole, listNames.filter(rw).first());
    if(indexList.isEmpty()) return;
    QModelIndex selectedIndex(indexList.first());
    myView->selectionModel()->setCurrentIndex(selectedIndex, QItemSelectionModel::ClearAndSelect);

}; //findItem(QString text, QListView *myView)


А это сигнал:

connect(lineEdit, SIGNAL(textEdited(QString)),
            this, SLOT(findItem()));


Это findItem:

void MyDictWindows::findItem()
{
    Database* db = Database::Instance();
    db->findItem(lineEdit->text(), myView);

}; //MyDictWindows::findItem



Буду признателен за помощь. И как сделать так, чтобы список грузился целиком ....
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 19.4.2024, 21:27