如何将信号转发到最后点击的QGraphicsScene

时间:2012-04-11 15:48:35

标签: qt signals-slots

我有一些QGraphicsScene子类“CustomScene”都来自包含虚函数cut(),copy(),paste()和delete()的通用接口。 QGraphicsScene是超类,它由CustomSceneInterface继承,由CustomScene继承。每个CustomScenes都显示在主窗口的单独QGraphicsViews中。我也有剪辑,复制,粘贴和删除的QActions。

我无法弄清楚如何将QAction信号发送到最后点击的任何CustomScene(或任何“焦点”)。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

我意识到我可以将QAction信号发送到插槽,以检查哪个QGraphicsView具有焦点,然后调用其场景的适当方法。我需要打电话

QWidget::setFocusPolicy(Qt::ClickFocus)
在QGraphicsViews上

以使其正常工作。如果有人能想出更好的解决方案,请告诉我。

编辑:

使用Qt5并且能够将lambda表达式用作插槽,我现在可以采用一种非常漂亮的方法。首先,我创建一个函数lastClickedScene(),它返回上次点击的场景。然后我做connect(actionCut, &QAction::triggered, [=]{lastClickedScene->cut();})