2014-12-10 1 views
1

QAbstractScrollArea + 사용자 정의 QWidget 파생 위젯을 "the"위젯 (sizeHint() 재정의)로 사용하고 있습니다. 응용 프로그램에서 마우스 이동 중에 QWidget 내용을 지속적으로 업데이트해야합니다 (일종의 드래그하지만 정확하게는 객체간에 선을 그리는 그리기 도구이므로 마우스 커서를 바꾸고 선을 그릴 필요가 있음) 파리).Qt5 : mouseMoveEvent에서 update()를 수행 한 후에 paintEvent가 호출되지 않습니다.

응용 프로그램이 정상적으로 작동합니다. 나는 내가 할 수있는 수동 업데이트 그러나 상관없이 내가 수동으로 업데이 트를() 화재 (또는) (칠) 것을 scrollContentsBy 동안 뷰포트 등

mouseMoveEvent에 전화, paintEvent 것 , 스크롤바 표시, 제대로 내용을 렌더링 할 수 "드래그"프로세스가 끝난 후에 만 ​​호출됩니다. mouseReleaseEvent가 방아쇠됩니다.

그리고 나는 이것이 우연히 일어난 이유입니다. 분명히 mouseMoveEvent 내에서 직접 업데이트를 수행하면 분명히 QPainter에 의해 거부 될 것입니다. 내에서 QPainter를 인스턴스화 할 수 없으므로 mouseMoveEvent - Qt drops는 "paintEngine이 더 이상 호출되지 않아야합니다"라고 말합니다.

어떤 제안을 환영합니다 :) 감사합니다,

답변

1

시큰둥이 나를 절름발이. "update()"를 "viewport() -> update()"와 절대로 혼합하지 마십시오.