2014-12-05 2 views
0

QGraphicsItem에서 상속 한 여러 요소를 보유하고있는 QGraphincsView를 사용하고 있습니다. 모든 것이 잘 작동하고 원하는대로 선택할 수 있습니다. Ctrl 키를 누른 상태에서 여러 항목을 선택할 수 있습니다.키를 누르지 않고 여러 QGraphicsItem을 선택하십시오.

이제 Ctrl 키를 누르지 않고도 선택적 다중 선택을 구현하고 싶습니다. 난 이미 이벤트가 기본 클래스 QGraphicsItem이다하지만이 작동하지 않습니다에 넘겨지기 전에

evt->setModifiers(Qt::ControlModifier); 

를 호출하여 마우스를 눌러 이벤트에 관련 수정을 설정했습니다.

내 질문 : 기본적으로 다중 선택 기능을 얻고 키를 누르지 않고 수행해야하는 작업은 무엇입니까?

감사합니다.

답변

1

이 컨트롤은 QGraphicsScene에서 제어합니다. 당신은 말했다 : -이 사실이 아니다 QGraphicsItem

에서 상속 여러 요소를 보유하고 QGraphincsView을 사용하고

. QGraphicsView는 장면 영역으로의 윈도우입니다. QGraphicsItem에서 파생 된 항목을 보유하는 QGraphicsScene입니다.

QGraphicsSceneselectedItems(), selectionArea()setSelectionArea()과 같은 기능을 가지고 있음을 문서에서 확인할 수 있습니다. QGraphicsItem::setSelected을 사용하여 QGraphicsItem을 선택할 수 있지만 항목을 클릭 할 때 발생하는 제어는 QGraphicsView에서 처리되며 이벤트는 QGraphicsView에서 전달됩니다.

QGraphicsScene에서 상속받은 경우 마우스 메서드를 재정의 할 수 있습니다. mousePressEvent, mouseMoveEvent, mouseReleaseEvent. 이렇게하면 사용자가 연속 된 항목을 클릭하여 선택하고 QGraphicsItem :: setSelected 함수를 호출하여 반응하는 시점을 모니터링 할 수 있습니다.

또는 디자인에 따라 사용자가 장면에서 영역을 그리게하고 QGraphicsScene::setSelectionArea을 호출하면 주어진 QPainterPath로 둘러싸인 모든 항목이 설정됩니다.

관련 문제