2012-04-11 28 views
0

我有幾個QGraphicsScene子類「CustomScene」都來自包含虛函數cut(),copy(),paste()和delete()的通用接口。 QGraphicsScene是超類,它由CustomSceneInterface繼承,由CustomScene繼承。每個CustomScenes都顯示在主窗口的單獨QGraphicsViews中。我也有剪切,複製,粘貼和刪除的QActions。如何將信號轉發到最後點擊的QGraphicsScene

我無法弄清楚如何將QAction信號發送到上次點擊的任何一個CustomScene(或具有「焦點」的任何一個)。

我該怎麼做?

回答

1

我意識到我可以將QAction信號發送到插槽,檢查哪個QGraphicsView已經對焦,然後調用其場景的適當方法。我需要撥打

QWidget::setFocusPolicy(Qt::ClickFocus) 

對QGraphicsViews才能正常工作。如果有人能想出更好的解決方案,請告訴我。

編輯:

隨着QT5並能夠使用lambda表達式作爲插槽,我現在可以使用一個相當漂亮的辦法。首先,我製作了一個功能lastClickedScene(),它返回最後一次點擊的場景。然後我做connect(actionCut, &QAction::triggered, [=]{lastClickedScene->cut();})

相關問題