QContextMenuEvent Class

QContextMenuEventクラスは、コンテキストメニューイベントを記述するパラメータを含んでいます。詳細...

ヘッダー #include <QContextMenuEvent>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
継承: QInputEvent

パブリックタイプ

enum Reason { Mouse, Keyboard, Other }

パブリック関数

QContextMenuEvent(QContextMenuEvent::Reason reason, const QPoint &pos, const QPoint &globalPos, Qt::KeyboardModifiers modifiers = Qt::NoModifier)
const QPoint &globalPos() const
int globalX() const
int globalY() const
const QPoint &pos() const
QContextMenuEvent::Reason reason() const
int x() const
int y() const

詳細説明

コンテキストメニューイベントは、ユーザがコンテキストメニューを開くべきアクションを実行したときに送られます:

  • マウスの右ボタンのクリック
  • キーボードのメニューキーを押す(キーボードにメニューキーがある場合、標準的な104キーPCキーボードのメニューキーなど)
  • その他のキーボードショートカットを押す(macOS 15以降のデフォルトでは "Ctrl+Return "など)。

期待されるコンテキストメニューは、アプリケーション内のコンテンツ("コンテキスト")に関連するactions 。Qt では、コンテキストは少なくとも QContextMenuEvent を受け取る特定のwidget またはQt Quick Item を指します。選択項目がある場合は、それがコンテキストとして扱われます。コンテキストは、QContextMenuEvent::pos()を使用して、ウィジェット、アイテム、または選択範囲内のコンテンツを特定するために、さらに絞り込むことができます。

ウィジェットは、このイベントを処理するためにQWidget::contextMenuEvent() をオーバーライドできます。多くのウィジェットは既にそうなっており、デフォルトで便利なコンテキストメニューを持っています。一部のウィジェットには、createStandardContextMenu() のような関数があり、デフォルトのアクション・セットをQMenu に入力します。

Qt Quick では、ContextMenu attached プロパティでイベントを処理できます。QtQuick.Controls コントロールの中には、デフォルトでコンテキストメニューを提供しているものがあります。

ほとんどの合成イベント(QTouchEventQTabletEvent が受け付けられなかった後にのみ送信されるQMouseEvent など)とは異なり、QContextMenuEvent は、元のマウスイベントやキーイベントが既に処理されてaccepted されたかどうかに関係なく送信されます。これは、マウスの右ボタン(クリックまたはドラッグ)を使用して何らかのアイテム(アイコン、描画要素、またはアイテムビューのセル)を選択し、マウスの右ボタンを離すとすぐにコンテキストメニューが表示されるというWindowsのUIパターンに対応するためです。(そのため、Windows では QContextMenuEvent はマウスを離したときに送られ、他のプラットフォームでは押したときに送られます。Qt はデフォルトでplatform convention に従います。

また、Pane のようなQt Quick Controls の中にはマウスイベントを受け付けるものがあり、マウスの押下やクリックの後に QContextMenuEvent を受け取るようになっています。

押したときにコンテキストメニューを開き、離したときにメニュー項目をドラッグして選択する、押し-ドラッグ-離しという UI パターンをサポートしたい場合は、QMouseEvents を直接処理する必要があります(QWidget サブクラスでvirtual functions をオーバーライドするか、Qt Quick でメニューを開くためにTapHandler を使用します)。reason() がMouse の場合、QContextMenuEvent は冗長になります。ignoreしかし、ウィジェット、カスタムコントロール、またはアプリケーションが、comes from プラットフォーム固有のキーボードショートカットを使用する QContextMenuEvent に応答できるようにする必要があります。

QContextMenuEvent がignored されると、Qt はposition の下にある他のウィジェットやアイテム(通常はカーソル位置から変換されます)にイベントを送ろうとします。

メンバ型のドキュメント

enum QContextMenuEvent::Reason

この列挙型は、イベントが送信された理由を記述する。

定数説明
QContextMenuEvent::Mouse0マウスによってイベントが送信されました。通常、これはマウスの右ボタンがクリックされたことを意味しますが、これはプラットフォームに依存します。
QContextMenuEvent::Keyboard1キーボードによって、このイベントが送信されました。Windowsでは、メニューボタンが押されたことを意味する。
QContextMenuEvent::Other2マウスでもキーボードでもない)他の手段でイベントが送られた。

メンバー関数ドキュメント

QContextMenuEvent::QContextMenuEvent(QContextMenuEvent::Reason reason, const QPoint &pos, const QPoint &globalPos, Qt::KeyboardModifiers modifiers = Qt::NoModifier)

acceptパラメータフラグをfalseに設定したコンテキストメニューイベントオブジェクトを構築する。

reason パラメータにはQContextMenuEvent::Mouse またはQContextMenuEvent::Keyboard を指定します。

pos パラメータは、受信ウィジェットからの相対的なマウス位置を指定します。globalPos は、絶対座標でのマウス位置です。modifiers には、キーボード修飾子を指定します。

const QPoint &QContextMenuEvent::globalPos() const

イベント発生時のマウスポインタのグローバル位置を返します。

x(),y(),pos()も参照

int QContextMenuEvent::globalX() const

イベント発生時のマウスポインタのグローバル x 位置を返す。

globalY() およびglobalPos()も参照

int QContextMenuEvent::globalY() const

イベント発生時のマウスポインタのグローバルy位置を返す。

globalX() およびglobalPos()も参照

const QPoint &QContextMenuEvent::pos() const

イベントを受け取ったウィジェットに対するマウスポインタの相対位置を返す。

注意: QContextMenuEvent がマウスの右ボタンからのものでない場合、pos()null になる可能性があります。

x()、y()、globalPos()も参照してください

QContextMenuEvent::Reason QContextMenuEvent::reason() const

このコンテキストイベントの理由を返します。

int QContextMenuEvent::x() const

イベントを受け取ったウィジェットからの相対的なマウスポインタの x 位置を返します。

y() およびpos()も参照してください

int QContextMenuEvent::y() const

イベントを受け取ったウィジェットからの相対的なマウスポインタの y 位置を返します。

x() およびpos()も参照してください

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.