ユーザーがシーンの空の部分を右クリックしたときにポップアップを表示する方法はありますか?
私はQtに不慣れで、スロットとサブクラス化を試しましたが、役に立ちませんでした。
そのようなスロットはなく、それぞれ:
「エラー:「QMouseEvent」は宣言されていません」
onMouseReleaseイベントを実装しようとしたとき。
ユーザーがシーンの空の部分を右クリックしたときにポップアップを表示する方法はありますか?
私はQtに不慣れで、スロットとサブクラス化を試しましたが、役に立ちませんでした。
そのようなスロットはなく、それぞれ:
「エラー:「QMouseEvent」は宣言されていません」
onMouseReleaseイベントを実装しようとしたとき。
QGraphicsViewは、QGraphicsSceneのコンテンツを表示するために使用されるウィジェットです。したがって、コンテキストメニュー(ポップアップメニュー)を実装する正しい場所はQGraphicsViewです。
contextMenuEvent関数を再実装する必要があります。これは、QGraphicsViewから継承された独自のクラスです。
void YourGraphicsView::contextMenuEvent(QContextMenuEvent *event)
{
QMenu menu(this);
menu.addAction(...);
menu.addAction(...);
...
menu.exec(event->globalPos());
}
Qtのメニューの例も参照してください。
contextMenuEventクラスのメソッドを再実装できQGraphicsSceneます。これにより、シーンの座標と画面の座標にアクセスできるようになります(QGraphicsViewこれは機能しますが、この情報はありません)。
void YourGraphicsScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
{
// event->scenePos() is available
QMenu menu(this);
menu.addAction(...);
menu.addAction(...);
...
menu.exec(event->screenPos());
}