QContextMenuEvent Class
QContextMenuEvent クラスには、コンテキストメニューイベントを表すパラメータが含まれています。詳細...
| ヘッダー: | #include <QContextMenuEvent> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| 継承元: | QInputEvent |
- 継承されたメンバーを含む、すべてのメンバーの一覧
- 非推奨のメンバ
- QContextMenuEvent はイベントクラスの一部です。
パブリック型
| 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 |
保護された関数
| QContextMenuEvent(QContextMenuEvent &&) | |
| QContextMenuEvent & | operator=(QContextMenuEvent &&) |
| QContextMenuEvent & | operator=(const QContextMenuEvent &other) |
詳細な説明
コンテキスト メニュー イベントは、ユーザーがコンテキスト メニューを開くべき操作を実行したときに送信されます。
- マウスの右ボタンをクリックする
- 専用のキーボードメニューキーを押す(キーボードにそのようなキーがある場合。標準的な104キーのPCキーボードのメニューキーなど)
- その他のキーボードショートカットの押下(macOS 15以降ではデフォルトで「Ctrl+Return」など)
期待されるコンテキストメニューには、アプリケーション内の特定のコンテンツ(「コンテキスト」)に関連するactions が含まれている必要があります。 Qt において、コンテキストとは少なくとも、QContextMenuEvent を受け取る特定のwidget またはQt Quick Item を指します。選択範囲が存在する場合、それもおそらくコンテキストとして扱われるべきです。QContextMenuEvent::pos() を使用することで、ウィジェット、アイテム、または選択範囲内のコンテンツを特定し、コンテキストをさらに絞り込むことができます。
ウィジェットは、QWidget::contextMenuEvent() をオーバーライドしてこのイベントを処理できます。多くのウィジェットはすでにこれを行っており、デフォルトで便利なコンテキストメニューを備えています。一部のウィジェットには、createStandardContextMenu() などの関数があり、デフォルトのアクションセットをQMenu に設定します。これはサブクラスでさらにカスタマイズしてから表示することができます。
Qt Quick では、ContextMenu というアタッチドプロパティを介してこのイベントを処理できます。一部のQtQuick.Controls コントロールは、デフォルトでコンテキストメニューを提供しています。
ほとんどの合成イベント(QTouchEvent やQTabletEvent が受け入れられなかった場合にのみ送信されるQMouseEvent など)とは異なり、QContextMenuEvent は、元のマウスイベントやキーイベントがすでに処理済みであるかどうかにかかわらず送信されます。accepted 。 これは、WindowsのUIパターン(右マウスボタン(クリックまたはドラッグ)を使用して何らかの項目(アイコン、描画要素、またはItem View内のセルなど)を選択し、右マウスボタンを離すとすぐにコンテキストメニューが表示される)に対応するためのものです。(メニュー上のアクションは、選択対象に適用されることを意図しています。) したがって、Windows では QContextMenuEvent はマウスボタンを離したときに送信されますが、他のプラットフォームでは押下時に送信されます。Qt はデフォルトでplatform convention に従います。
また、Pane など、マウスイベントを受け付ける一部のQt Quick コントロールも、マウス押下またはクリック後に QContextMenuEvent を受信します。
押下時にコンテキストメニューを開き、メニュー項目上をドラッグしてリリース時に選択するという「押下・ドラッグ・リリース」UIパターンをサポートしたい場合は、QMouseEvents を直接処理する必要があります(QWidget のサブクラスでvirtual functions をオーバーライドするか、Qt Quick でTapHandler を使用してMenu を開くなど)。 その場合、reason()がMouse であるとき、QContextMenuEventは冗長になります。その場合は、イベントをignore()すべきですが、それでもウィジェット、カスタムコントロール、またはアプリケーションが、comes from でプラットフォーム固有のキーボードショートカットを指定したQContextMenuEventに応答できるようにしておく必要があります。
QContextMenuEventがignored された場合、Qtはposition (通常はカーソル位置から変換されたもの)の下にある他のウィジェットやアイテムに、そのイベントを配信しようとします。
メンバ型のドキュメント
enum QContextMenuEvent::Reason
この列挙型は、イベントが送信された理由を表します。
| 定数 | 値 | 説明 |
|---|---|---|
QContextMenuEvent::Mouse | 0 | マウスによってイベントが送信されました。通常、これはマウスの右ボタンがクリックされたことを意味しますが、これはプラットフォームに依存します。 |
QContextMenuEvent::Keyboard | 1 | キーボードによってこのイベントが送信されました。Windows では、これはメニューボタンが押されたことを意味します。 |
QContextMenuEvent::Other | 2 | このイベントは、マウスやキーボード以外の何らかの手段によって送信されました。 |
メンバ関数のドキュメント
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 には、キーボードの修飾キーが格納されます。
[protected delete] QContextMenuEvent::QContextMenuEvent(QContextMenuEvent &&)
QContextMenuEvent のインスタンスをMoveコンストラクタで生成します。この関数は削除されています。
const QPoint &QContextMenuEvent::globalPos() const
イベント発生時のマウスポインタのグローバルな位置を返します。
int QContextMenuEvent::globalX() const
イベント発生時のマウスポインタのグローバルなx座標を返します。
globalY() およびglobalPos()も参照してください 。
int QContextMenuEvent::globalY() const
イベント発生時のマウスポインタのグローバルなY座標を返します。
globalX() およびglobalPos()も参照してください 。
const QPoint &QContextMenuEvent::pos() const
イベントを受け取ったウィジェットに対するマウスポインタの位置を返します。
注: QContextMenuEvent がマウスの右ボタンから発生したものでない場合 、pos() はnull となる可能性があります。
QContextMenuEvent::Reason QContextMenuEvent::reason() const
このコンテキストイベントの発生原因を返します。
int QContextMenuEvent::x() const
イベントを受け取ったウィジェットを基準として、マウスポインタのx座標を返します。
int QContextMenuEvent::y() const
イベントを受け取ったウィジェットを基準として、マウスポインタの y 座標を返します。
[protected delete] QContextMenuEvent &QContextMenuEvent::operator=(QContextMenuEvent &&)
other をこのQContextMenuEvent インスタンスに割り当てます。この関数は削除されます。
[noexcept protected default] QContextMenuEvent &QContextMenuEvent::operator=(const QContextMenuEvent &other)
other をこのQContextMenuEvent インスタンスにコピーして代入します。
© 2026 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.