2016-08-15 6 views
1

Qt5.6을 사용하고 있습니다. QWidget 그래픽 개체가 렌더링되고 다른 그래픽이 다른 그래픽 앞에 렌더링되면 그래픽에서 그래픽 업데이트를 트리거하는 것으로 보입니다. 앞.Qt 그래픽이 다른 그래픽으로 가려 지지만 여전히 페인트 업데이트가 발생합니다.

오버 헤드가 발생합니다. 그래픽이 앞에있는 그래픽으로 완전히 가려져 있는지 확인하고 싶으면 페인트 이벤트를 중단해야합니다.

나는 이것이 자동적 일 것이고 Qt의 내부의 일환으로 이루어 졌다고 생각하지만 그렇지 않은 것 같다.

+0

QWidget에서 파생 된 객체입니다. – SPlatten

+0

1) 어떻게 한 위젯의 상황을 다른 위젯의 위와 같이 완전히 얻었습니까? 2) QPaintEvent 인수에 클리핑되지 않은 영역이 있는지 확인 하시겠습니까? – peppe

+0

내 응용 프로그램은 XML 파일의 내용을 렌더링합니다. 일부 위젯에는 부모 위에 나타나는 하위 위젯이 있습니다. – SPlatten

답변

1

각 위젯의 페인트 이벤트는 위젯이 다시 그리기되어야한다고 결정한 후에 위젯 컴포지션에서옵니다. 이벤트가 도착하면 위젯 페인트해야 함을 의미합니다. 그렇지 않으면 시각적으로 정의되지 않은 결과가 표시됩니다.

기본적으로 위젯은 투명 할 수 있으며 위젯 컴포지션은 위젯 스택 전체를 앞뒤 순서로 페인팅해야 구성 할 수 있습니다.

투명하지 않은 모든 위젯은 Qt::WA_OpaquePaintEvent 속성 집합을 가져야합니다. 이렇게하면 위젯 뒤에 완전히 숨겨진 위젯을 그릴 필요가 없음을 위젯 컴포지션에 알립니다. 위젯의 모든 픽셀을 칠해 야합니다!

+0

고마워요. 내일이 일을 먼저 시도해 보겠습니다. – SPlatten

관련 문제