ユーザーがシーンの空の部分を右クリックしたときにポップアップを表示する方法はありますか?
私は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());
}