Фильтрация QTableView с помощью QSortFilterProxyModel (фильтры группировки) - PullRequest
3 голосов
/ 05 июля 2011

Кажется, я не способен фильтровать более одного столбца одновременно.Я думаю, что это обычное использование при использовании фильтров, может быть, я что-то упускаю.

Например, у меня есть 4 столбца в моем QTableView, скажем, столбце X (string), Y (int), Z (string), Q (string).Я хочу фильтровать по filter_1 столбцу X и фильтровать по filter_2 столбцу Z.Можно ли установить фильтр QSortFilterProxyModel для более одного столбца (динамически), но не для всех (реализует filterAcceptsRow).

Спасибо

1 Ответ

6 голосов
/ 05 июля 2011

Вы можете использовать методы setFilterRegExp (), setFilterWildcard () или setFilterFixedString () для установки фильтра. Пример из документа QT:

proxyModel->setFilterRegExp(QRegExp(".png", Qt::CaseInsensitive,
                                             QRegExp::FixedString));
proxyModel->setFilterKeyColumn(1); 

Если этих методов недостаточно, в соответствии с документацией Qt настройка моделей прокси предназначена для использования через наследование.

Для опытных пользователей, QSortFilterProxyModel может быть подкласс, предоставляя механизм, который позволяет настраивать фильтры реализован.

В этом случае вам необходимо переопределить и переопределить метод filterAcceptsRow ().

...