사용 가능 또는 사용 불가능한 날짜 (범위 날짜는 아님)로 QCalendarWidget을 사용하려고하지만 불가능한 모양입니다 (https://bugreports.qt.io/browse/QTBUG-198).QCalendarWidget - 날짜를 비활성화하는 방법
paintEvent 메소드 (또는 다른 것)로이 작업을 수행 할 수 있는지 알고 계십니까?
감사의 말씀 :
사용 가능 또는 사용 불가능한 날짜 (범위 날짜는 아님)로 QCalendarWidget을 사용하려고하지만 불가능한 모양입니다 (https://bugreports.qt.io/browse/QTBUG-198).QCalendarWidget - 날짜를 비활성화하는 방법
paintEvent 메소드 (또는 다른 것)로이 작업을 수행 할 수 있는지 알고 계십니까?
감사의 말씀 :
나는 약간의 연구를했습니다. 캘린더 위젯에는 일반 모델 (QCalendarModel
)을 사용하는 일반 QTableView
하위 클래스 (QCalendarView
)가 포함되어 있습니다. 내 시도는보기에 대한 프록시 모델을 추가하고 비활성화하려는 날짜에 비활성화 상태를 반환하는 data()
및 flags()
함수를 변경하는 것이 었습니다. 하지만 셀에 표시되는 날짜를 알아야했습니다. 그것에 대한 QCalendarModel::dateForCell
방법이 있지만 코드에서 액세스 할 수 없습니다. 다소 복잡하고 구현에 따라 달라집니다 QCalendarModel
.
이렇게 나는 이것이 거의 불가능하다고 생각합니다. 내가 볼 수있는 유일한 방법은 QCalendarWidget
소스를 프로젝트에 복사하고 클래스의 이름을 바꾸어 기존 Qt 클래스의 충돌을 피하는 것입니다. 그런 다음 구현을 변경할 수 있습니다. 최소 날짜와 최대 날짜가 사용 된 곳 (예 : QCalendarModel::flags
함수)에서는 사용 또는 사용 중지 된 클래스 목록을 사용하여 바꿔야합니다.
시도 할 때 유용하다고 생각 될 경우 here 코드를 게시했습니다. 프록시 모델이 시작되고 모든 셀의 배경이 녹색으로 바뀝니다.
답장을 보내 주셔서 감사합니다. 늦어서 반갑습니다. 다음 주에 솔루션을 시험해보고 소스 코드를 검사 해 보겠습니다. –