2013-07-26 3 views
1

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

ответ

2

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

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

QSortFilterProxyModel* proxyModel = new QSortFilterProxyModel(this); 

proxyModel->setSourceModel(yourQSqlTableModel); 

yourView->setModel(proxyModel); 

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

+0

Большое спасибо Tim.Now я буду искать сортировку и фильтрацию – user2521257

1

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