2009-11-10 6 views
1

QItemDelegate를 사용하여 테이블을 만들고 있습니다. 필자는 paint (..) 메서드를 사용하여 위임 된 항목을 편집 모드에서 빠져 나올 때 같은 모양으로 그리지 만, 선택되거나 선택되지 않을 때 항목을 다르게 그릴 필요가 있으며 이러한 이벤트 중에 paint 메서드도 호출됩니다. 내 질문은 언제 어떻게 그릴지를 아는가?QItemDelegate의 paint() 함수에서 항목을 선택했는지 여부를 어떻게 결정합니까?

감사합니다.

답변

8

QItemDelegate.paint 메서드는 QStyleOption에서 상속 된 QStyleOptionViewItem을 매개 변수로 사용합니다. QStyleOption에는 QStyle::State 유형의 state이라는 멤버 변수가 있습니다. 상태에 사용할 수있는 비트 플래그 중 하나는 QStyle::State_Selected이며 테스트 할 대상입니다.

+0

thx 전체적으로, 나는 그것이 그 객체라는 것을 알았지 만 찾을 수 없었습니다. 내가 대답 할 수있는 또 다른 질문이 있습니다. 내 테이블의 특수보기는 실제로 QPushButton입니다. 나는 그것을 클릭 할 때 어떻게 텍스트를 변경시킬 수 있는지를 알고 있다면, 동시에 다른 컬럼의 텍스트도 값을 변경하게하는지 궁금하다. –

+0

@yan : 나는 그것을 할 수있는 간단한 방법을 모른다. 복잡한 방법은 델리게이트에 주어진 모델 인덱스를 사용하고, 모델을 가져 오기 위해이를 사용하고, 데이터 반환을 위해 가지고있는 값을 변경하기 위해 모델에 어떻게 든 알립니다. 그런 다음 모델에서 해당 열의 각 행에 대해 다른 데이터를 반환하십시오. –

관련 문제