2012-04-11 4 views
0

나는 가상 함수 cut(), copy(), paste() 및 delete()가 포함 된 공통 인터페이스에서 파생 된 몇 개의 QGraphicsScene 하위 클래스 "CustomScene"을 가지고 있습니다. QGraphicsScene은 CustomScene에서 상속 한 CustomSceneInterface에 상속되는 수퍼 클래스입니다. 각 CustomScenes는 메인 윈도우의 별도 QGraphicsViews에 표시됩니다. 잘라 내기, 복사, 붙여 넣기 및 삭제를위한 QAction도 있습니다.마지막으로 클릭 한 QGraphicsScene에 신호를 전달하는 방법

마지막으로 클릭 한 (또는 "초점"이있는) QAction 신호를 보내는 방법을 알아 내려는 데 문제가 있습니다.

어떻게하면됩니까?

답변

1

QAction 신호를 QGraphicsView에 포커스가 있는지 확인한 후 해당 장면의 적절한 메서드를 호출하는 슬롯에 QAction 신호를 보낼 수 있다는 것을 알았습니다. 이 기능이 제대로 작동하려면

QWidget::setFocusPolicy(Qt::ClickFocus) 

을 QGraphicsViews에 전화해야합니다. 누군가가 더 나은 해결책을 생각할 수 있으면 알려주십시오.

편집 :

Qt5와 슬롯으로 람다 표현식을 사용 할 수있는, 지금은 꽤 규칙적인 접근 방식을 채택 할 수 있습니다. 먼저, 마지막으로 클릭 한 장면을 반환하는 함수 lastClickedScene()을 만듭니다. 그런 다음 connect(actionCut, &QAction::triggered, [=]{lastClickedScene->cut();})을 수행합니다.

관련 문제