0

いくつかのQGraphicsSceneサブクラス「CustomScene」があり、すべて仮想関数cut()、copy()、paste()、およびdelete()を含む共通インターフェースから派生しています。QGraphicsSceneは、CustomSceneによって継承されるCustomSceneInterfaceによって継承されるスーパークラスです。各CustomScenesは、メインウィンドウの個別のQGraphicsViewに表示されます。切り取り、コピー、貼り付け、削除のためのQActionもあります。

最後にクリックされたCustomScene(または「フォーカス」がある方)にQActionシグナルを送信する方法を理解するのに問題があります。

これどうやってするの?

4

1 に答える 1

1

QAction シグナルをスロットに送信して、どの QGraphicsView にフォーカスがあるかを確認し、そのシーンの適切なメソッドを呼び出すことができることに気付きました。電話する必要があります

QWidget::setFocusPolicy(Qt::ClickFocus)

これを正しく機能させるには、QGraphicsViews で。誰かがより良い解決策を考えることができる場合は、私に知らせてください。

編集:

Qt5 とラムダ式をスロットとして使用できるようになったので、かなり気の利いたアプローチを採用できるようになりました。最初に、lastClickedScene()最後にクリックされたシーンを返す関数を作成します。それから私はしますconnect(actionCut, &QAction::triggered, [=]{lastClickedScene->cut();})

于 2012-04-11T19:08:34.153 に答える