2014-03-19 6 views
0

내 맞춤식 QGraphicsLineItem을 만들었습니다. 커스텀 그래픽 라인 아이템은 라인의 끝점에서 마우스를 클릭하면 회전하고 크기가 조정됩니다.맞춤 그래픽 광고 항목을 선택, 누르기 및 이동하는 데 문제가 발생했습니다.

문제는 선을 쉽게 선택하고 이동할 수 없다는 것입니다. 마우스 누름 이벤트가 쉽게 감지되지 않습니다. 내 mousePressEvent 디버그 문을 넣었지만 매우 무작위로 호출 된 가져옵니다. 나는 선택과 이동을위한 falgs를 설정했습니다.

boundingRect() 및 shape()을 다시 구현하지는 않지만 내 맞춤 광고 항목 내에 부모 QGraphicsLineItem의 메소드를 호출했습니다. 마우스 누름 이벤트가 광고 항목의 한 쪽 끝에서 한 번의 클릭으로 쉽게 감지되지 않는 이유에 대해 알려주십시오.

답변

0

나는 boundingRect()와 모양 (재 구현하지 않은)이이 문제를 것이다

. QGraphicsItem의 mouseEvent는 boundingRect()에서 정의한 boundingregion에 바인딩됩니다. shape()는 필요하지 않습니다.

+0

하지만 부모님의 QGraphicLineItem :: boundingRect()는 맞춤 광고 항목의 boundingRect 안에 있고 다른 것은 호출하지 않습니다. 충분하지 않니? –

+0

@ Wagmare- 고마워요 !!!, 잘 작동합니다. 그러나 왜 형상을 다시 구현하면 안됩니까? 특별한 이유가 있습니까? –

+0

shape() 아마도 비선형 또는 다른 모양의 항목이있을 때 사용할 수 있습니다. 예 : 자유형, 그리기, 다각형, 별, 마우스와 같은 일부 모양은 직사각형 모양을 지정할 수 없습니다. U가 별을 그릴 것을 고려하십시오. boundingRect()는 완전한 직사각형을 제공 할 것이고 사용자는 실제 채색 된 별 영역 밖의 아무 곳이나 클릭 할 수 있습니다. 모양은 다각형 (별 모양)을 제공합니다. – Wagmare