Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Racheengel от Декабрь 05, 2008, 17:54



Название: QListWidget::keyboardSearch(), 4.4.x
Отправлено: Racheengel от Декабрь 05, 2008, 17:54
Есть такая хорошая функция - QListWidget::keyboardSearch(), которая позволяет перейти на введенную строку (сделать ее текущей). Очень удобно, но есть одна проблема - как то странно это работает... Например, если есть последовательность строк:

disk
disk drive
diskette
disks

то при вызове, скажем, keyboardSearch("disk"), функция работает нормально ("disk" выбирается в списке).
Если потом вызвать keyboardSearch("diskette"), тоже все ок - выберется "diskette",
НО: если опять вызвать keyboardSearch("disk"), выбранной останется строчка "diskette"...

баг? репортить?


Название: Re: QListWidget::keyboardSearch(), 4.4.x
Отправлено: pastor от Декабрь 05, 2008, 18:11
имхо, поиск происходит с текущей позиции и ищется подстрока в строке.


Название: Re: QListWidget::keyboardSearch(), 4.4.x
Отправлено: Racheengel от Декабрь 05, 2008, 18:40
Да, но это недокументировано и, по-моему, совершенно неправильно для настройки по умолчанию, как минимум это надо было делать опционально...


Название: Re: QListWidget::keyboardSearch(), 4.4.x
Отправлено: pastor от Декабрь 05, 2008, 19:03
Как вариант, можно написать письмо тролям и попросить разъяснения или пусть немого расширят документацию по этому методу


Название: Re: QListWidget::keyboardSearch(), 4.4.x
Отправлено: Racheengel от Декабрь 06, 2008, 02:33
Решил проблему следующим кодом вместо  keyboardSearch:

Код
C++ (Qt)
void MainForm::findItem(QListWidget *iv, const QString &str)
{
QList<QListWidgetItem *> list = iv->findItems(str, Qt::MatchStartsWith);
if (list.count()) {
iv->setCurrentItem(list.first());
iv->scrollToItem(list.first(), QAbstractItemView::PositionAtCenter);
}
}
 

Но троллям таки напишу.


Название: Re: QListWidget::keyboardSearch(), 4.4.x
Отправлено: Racheengel от Декабрь 08, 2008, 10:40
Написал репорт, будем ждать...


Название: Re: QListWidget::keyboardSearch(), 4.4.x
Отправлено: Racheengel от Декабрь 09, 2008, 18:33
Ответили: if you want the search to always start at the first item, you would need to set the current item to the first item before you call keyboardSearch.

ИМХО лаг доки. Попросил дополнить.




Название: Re: QListWidget::keyboardSearch(), 4.4.x
Отправлено: Racheengel от Декабрь 09, 2008, 18:54
дополнят :)