이 앱은 ItemIsMovable 및 ItemIsSelectable 플래그로 일부 그래픽 항목을 그립니다. QGraphicsView는 모든 키보드 및 마우스 상호 작용을 처리합니다.
두 boundingRects ()가 충돌하면 항상 표면에서 가장 작은 항목을 선택하고 싶습니다. 예를 들어 두 개의 직사각형이 다른 하나 안에 있다고 상상해보십시오. 사용자가 내부 사각형을 클릭하면 하나가 선택 될 것으로 예상합니다.
내 아이디어 :
(1) 항목의 모양이 변경 될 때마다 Z- 색인을 다시 계산합니다. 약간 과잉 인 것 같습니다.
(2) Reimplementing QGraphicsItem.shape () [내 항목은 실제로 세그먼트 경로입니다-경계 상자가 아닌 세그먼트를 선택할 수 있다면 작동합니다]-QPainterPath ()를 반환하면 작업이 수행되지 않는 것 같습니다. 장난.
(3) 먼저 항목 내에서 마우스 이벤트를 포착하고 기본 선택 메커니즘을 재정의하기 위해 (?) 작업을 수행합니다. 그것은 또한 과잉으로 보입니다.
이 목표를 달성하는 쉬운 방법이 있습니까?
감사합니다, Sébastien
사용자가 항목을 선택하고 그래픽 뷰가 위치를 수신하면 위치를 사용하여 장면 좌표로 변환하고 QGraphicsScene :: items 함수를 호출 할 수 있습니다 . 이것은 주어진 위치에 항목을 반환합니다.
이제 사용자가 선택한 지점에 항목 목록이 있으므로 항목을 비교하여 가장 작은 항목을 찾아서 선택한 항목으로 설정할 수 있습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다