장면에서 마우스 아래에있는 항목을 찾으려고합니다. 내가 사용하는 코드는 다음과 같습니다 :QGraphicsScene의 마우스 근처 항목
QPainterPath mousePath;
mousePath.addEllipse(mouseEvent -> pos(),5,5);
QList<QGraphicsItem *> itemsCandidate = this->items(mousePath);
if (!(itemsCandidate.contains(lastSelectedItem))) lastSelectedItem =itemsCandidate.first();
추신 : 이것은 장면을 나타냅니다.
코드는 마우스 위치 주변의 작은 원과 교차하는 항목을 찾아 이전 교차 교차가 여전히 교차되는 경우 항목 포인터를 변경하지 않고 그렇지 않으면 QList에서 첫 번째 항목을 가져야합니다.
불행히도이 코드는 서로 내부의 항목에는 사용할 수 없습니다. 예를 들어 Rect면이 Rect 인 경우 외부 Rect는 내부 Rect에 인접한 경우에도 항상 마우스 위치를 교차합니다. 어떻게 해결할 수 있을까요?
UPDATE :이 보인다 다각형에 문제가 아니지만, 등 사각형, 타원과
UPDATE :이 코드는 재정의 장면에 :: mouseMoveEvent
이 작동하지 않습니다 발견 된 나머지 항목은 가까운 근원이 더 가까운 가장자리가 아닌 것입니다. – Francesco
mouse_position에서 오브젝트의 가장자리까지 법선을 계산하는 메소드를 구현해야합니다. 직사각형, 원, 타원과 같은 사소한 사물의 경우 이것은 아주 사소한 것입니다. – OnWhenReady
그래서 박스 방법은 없다. 유일한 선택은 items()을 사용하여 영역에서 교차하는 항목을 선택하고 항목 당 수동으로 거리를 계산하는 것입니다. – Francesco