0

我有几个 QGraphicsScene 子类“CustomScene”,它们都派生自一个包含虚函数 cut()、copy()、paste() 和 delete() 的通用接口。QGraphicsScene是超类,继承自CustomSceneInterface,继承自CustomScene。每个 CustomScene 都显示在主窗口中的单独 QGraphicsViews 中。我还有用于剪切、复制、粘贴和删除的 QActions。

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

我怎样才能做到这一点?

4

1 回答 1

1

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

QWidget::setFocusPolicy(Qt::ClickFocus)

在 QGraphicsViews 上让它正常工作。如果有人能想到更好的解决方案,请告诉我。

编辑:

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

于 2012-04-11T19:08:34.153 回答