2011-07-05 8 views
3

그것은 한 번에 하나 이상의 열을 필터링 할 수없는 것 같습니다. 필터를 사용할 때 일반적인 사용법이라고 생각합니다. 아마도 누락 된 것이 있습니다.QSortFilterProxyModel (필터 그룹화) QTableView 필터링

예를 들어 X (string), Y (int), Z (string), Q (string) 열이라고 가정 해 봅시다. filter_1X으로 필터링하고 filter_2Z로 필터링하고 싶습니다. QSortFilterProxyModel 필터를 하나 이상의 열에 (동적으로) 설정할 수 있습니까? (전부는 아니지만 filterAcceptsRow을 다시 구현).

감사

답변

6

필터를 설정하는 setFilterRegExp(), setFilterWildcard() 또는 setFilterFixedString() 메소드를 사용할 수 있습니다. QT의 문서의 예는 다음

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

이러한 방법이 충분하지 않은 경우가 customizing proxy models 상속을 통해 사용하도록 설계 Qt는 문서에 따라. 고급 사용자를위한

, QSortFilterProxyModel는 는 가 구현으로 사용자 정의 필터를 할 수있는 메커니즘을 제공, 서브 클래스 될 수있다.

이 경우 filterAcceptsRow() 메소드를 서브라이드하고 재정의해야합니다.

+0

하위 클래스를 사용하고 filterAcceptsRow() 메서드를 재정의했지만 필터가 선택된 모든 열에서 작동합니다. 나는 동적 인 방법을 필요로한다. 그래서 나는 때때로 X, Y, 그리고 때로는 X, Y, Z, X, X, X 컬럼을 필터링 할 수있을 것이다. 더 많은 연구를하고 그것이 어떻게 진행되는지 알려줄 것이다. – krizajb

+1

이 예제를 http://www.qtcentre.org/threads/24267-QSortFilterProxyModel-setFilterRegExp-for-more-than-1-column에서 확인하십시오. 비슷한 일을하거나 filterAcceptsColumn 메서드를 사용할 수도 있습니다 –

+0

제 경우에 구현하려면 시간이 걸렸습니다, 작동합니다! 고마워요! – krizajb