Как показать только определенные строки в QSqlTableModel, используя текст поля со списком?

Я использую QSqlTableModel в Qt C++, и я хотел бы показать только строки, содержащие текст, который находится в QComboBox. Например, когда я нажимаю элемент «Джон» в поле со списком, в представлении таблицы должны отображаться только имена, начинающиеся с «Джон». Я понятия не имею, как это сделать.


person Rado G    schedule 26.07.2013    source источник


Ответы (2)


Класс для ваших нужд: QSortFilterProxyModel:

Вместо того, чтобы отображать QSqlTableModel напрямую, поместите QSortFilterProxyModel между моделью и вашим представлением:

QSortFilterProxyModel* proxyModel = new QSortFilterProxyModel( this );

proxyModel->setSourceModel( yourQSqlTableModel );

yourView->setModel( proxyModel );

Затем вы можете отсортировать или отфильтровать эту модель (проверьте разделы Sorting и Filtering в ссылке вверху).

person Tim Meyer    schedule 26.07.2013
comment
Большое спасибо Тим. Теперь буду искать сортировку и фильтрацию - person Rado G; 27.07.2013

Кстати, если ваш тип фильтрации можно легко обеспечить через SQL, вы можете просто использовать метод QSqlTableModel setFilter().

person MasterAler    schedule 22.07.2014