2013-07-23 2 views

답변

3

나는 약간의 연구를했습니다. 캘린더 위젯에는 일반 모델 (QCalendarModel)을 사용하는 일반 QTableView 하위 클래스 (QCalendarView)가 포함되어 있습니다. 내 시도는보기에 대한 프록시 모델을 추가하고 비활성화하려는 날짜에 비활성화 상태를 반환하는 data()flags() 함수를 변경하는 것이 었습니다. 하지만 셀에 표시되는 날짜를 알아야했습니다. 그것에 대한 QCalendarModel::dateForCell 방법이 있지만 코드에서 액세스 할 수 없습니다. 다소 복잡하고 구현에 따라 달라집니다 QCalendarModel.

이렇게 나는 이것이 거의 불가능하다고 생각합니다. 내가 볼 수있는 유일한 방법은 QCalendarWidget 소스를 프로젝트에 복사하고 클래스의 이름을 바꾸어 기존 Qt 클래스의 충돌을 피하는 것입니다. 그런 다음 구현을 변경할 수 있습니다. 최소 날짜와 최대 날짜가 사용 된 곳 (예 : QCalendarModel::flags 함수)에서는 사용 또는 사용 중지 된 클래스 목록을 사용하여 바꿔야합니다.

시도 할 때 유용하다고 생각 될 경우 here 코드를 게시했습니다. 프록시 모델이 시작되고 모든 셀의 배경이 녹색으로 바뀝니다.

+0

답장을 보내 주셔서 감사합니다. 늦어서 반갑습니다. 다음 주에 솔루션을 시험해보고 소스 코드를 검사 해 보겠습니다. –

관련 문제