我有一些QGraphicsScene子类“CustomScene”都来自包含虚函数cut(),copy(),paste()和delete()的通用接口。 QGraphicsScene是超类,它由CustomSceneInterface继承,由CustomScene继承。每个CustomScenes都显示在主窗口的单独QGraphicsViews中。我也有剪辑,复制,粘贴和删除的QActions。
我无法弄清楚如何将QAction信号发送到最后点击的任何CustomScene(或任何“焦点”)。
我该怎么做?
答案 0 :(得分:1)
我意识到我可以将QAction信号发送到插槽,以检查哪个QGraphicsView具有焦点,然后调用其场景的适当方法。我需要打电话
QWidget::setFocusPolicy(Qt::ClickFocus)
在QGraphicsViews上以使其正常工作。如果有人能想出更好的解决方案,请告诉我。
编辑:
使用Qt5并且能够将lambda表达式用作插槽,我现在可以采用一种非常漂亮的方法。首先,我创建一个函数lastClickedScene()
,它返回上次点击的场景。然后我做connect(actionCut, &QAction::triggered, [=]{lastClickedScene->cut();})
。