Общий подход:
- Connect сигнал
textChanged
от линии правки слота вашего выбора.
- В этом доступе слота модель в виде списка (или вы его хранили или
model
на список)
- Модели унаследованный от
QAbstractItemModel
который имеет match
функцию для поиска (documentation)
- вызовов
match
с Qt::MatchStartsWith
в качестве флага соответствия и соответствующей роли (роль отображения), и вы получите список индексов модели
- Результатом может быть ноль, один или несколько индексов.
- Получить модель выбора из любого представления списка модели (
selectionModel
) и вызвать select
с каждым индексом в списке индексов в результате вызова match
(некоторые из них могут быть уже выбраны)
Чтобы дать более практичный совет.
Пример вызова в соответствии:
model->match(model->index(0, 0), Qt::DisplayRole, QVariant::fromValue(search_text), -1, Qt::MatchStartsWith);
Этот поиск от начала до конца, принимая отображаемый текст в виде списка и сравнивает его с текстом поиска и возвращает все найденные матчи, где начинается отображается текст с текстом поиска.
Пример вызова для выбора:
model->selectionModel()->select(index, QItemSelectionModel::Select);
Какой будет выбрать индекс (с different flags вы можете отменить или переключить выбор).
Пример итерации по QModelIndexList
, который является сокращением для QList<QModelIndex>
:
foreach(QModelIndex modelIndex, modelIndexList)
selectionModel->select(modelIndex, QItemSelectionModel::Select);