Сохранить выбор после фильтрации QTableView с помощью QSortFilterProxyModel - PullRequest
1 голос
/ 05 апреля 2011

Я создал QTableView, связанный с QSortFilterProxyModel, связанным с другой моделью. Под QTableView (в графическом интерфейсе) есть QLineEdit, используемый для «поиска» элемента в представлении.

Моя идея состоит в том, чтобы написать в QLineEdit то, что я ищу, и позволить представлению отображать только соответствующие элементы. После фильтрации я хочу выбрать соответствующий элемент, а затем очистить QLineEdit для возврата в полном виде. Все работает, но выбранный элемент, который будет отфильтрован, также потеряет выбор из-за аннулирования.

Как я могу решить эту проблему?

Ответы [ 2 ]

1 голос
/ 22 ноября 2012

Почему вы не запомнили выбранные строки до фильтрации, а затем просто восстановили их, когда закончили с фильтрацией.

Вы можете использовать QItemSelectionModel напрямую, как я себе представляю.

Используйте QItemSelectionModel::selectedRows() перед фильтрацией и выберите строки после фильтрации с помощью QItemSelectionModel::select().

Я знаю, что эта ветка очень старая, но я решил оставить комментарий для всех, кто сталкивается с подобной проблемой.

0 голосов
/ 06 апреля 2011

Из того, что вы написали, похоже, что проблема в том, что вы теряете QTableView, когда очищаете содержимое QLineEdit. Если вы запускаете подпрограмму 'search' в строке редактирования editFinished () или textChanged () , вы можете отключить от их перед изменением QLineEdit, а затем снова подключите снова. Или используйте логический флаг и не меняйте фильтрацию, когда он включен. Было бы гораздо проще ответить на ваш вопрос, если бы вы опубликовали упрощенную версию своего кода с проблемой, с которой вы столкнулись.

...