QContextMenuEvent Class

QContextMenuEvent 클래스에는 컨텍스트 메뉴 이벤트를 설명하는 매개 변수가 포함되어 있습니다. 더 보기...

Header: #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에서 컨텍스트는 적어도 특정 widget 또는 Qt Quick Item QContextMenuEvent를 수신하는 것입니다. 선택 항목이 있는 경우, 그 선택 항목이 컨텍스트로 취급되어야 합니다. 컨텍스트는 QContextMenuEvent::pos()를 사용하여 위젯, 항목 또는 선택 항목 내의 콘텐츠를 정확히 찾아내어 더 세분화할 수 있습니다.

위젯은 QWidget::contextMenuEvent()를 재정의하여 이 이벤트를 처리할 수 있습니다. 많은 위젯이 이미 그렇게 하고 있으며, 기본적으로 유용한 컨텍스트 메뉴가 있습니다. 일부 위젯에는 createStandardContextMenu()와 같은 함수를 사용하여 기본 동작 집합을 QMenu 에 채우고 하위 클래스에서 추가로 사용자 정의한 다음 표시할 수 있습니다.

Qt Quick 에서 이벤트는 ContextMenu 첨부 속성을 통해 처리할 수 있습니다. 일부 QtQuick.Controls 컨트롤은 이미 기본적으로 컨텍스트 메뉴를 제공합니다.

대부분의 합성 이벤트( QTouchEvent 또는 QTabletEvent 가 수락되지 않은 후에만 전송되는 QMouseEvent 와 같은)와 달리, QContextMenuEvent는 원래 마우스 또는 키 이벤트가 이미 처리되었는지 여부와 관계없이 전송되며 accepted. 이는 마우스 오른쪽 버튼(클릭 또는 드래그)을 사용하여 어떤 종류의 항목(아이콘, 그리기 요소 또는 항목 보기의 셀)을 선택한 다음 마우스 오른쪽 버튼을 놓는 즉시 컨텍스트 메뉴를 가져오는 Windows UI 패턴을 수용하기 위한 것입니다. (메뉴의 동작은 선택 항목에 적용되기 위한 것입니다.) 따라서 Windows에서는 마우스를 놓을 때 QContextMenuEvent가 전송되지만, 다른 플랫폼에서는 누를 때 전송됩니다. Qt는 기본적으로 platform convention 을 따릅니다.

마우스 이벤트를 허용하지만 마우스 누르기 또는 클릭 후에 QContextMenuEvent를 수신하는 Pane과 같은 Qt Quick Controls 도 있습니다.

누를 때 컨텍스트 메뉴를 열고, 놓을 때 메뉴 항목을 드래그하여 선택하는 press-drag-release UI 패턴을 지원하려면 QMouseEvents 을 직접 처리하여 ( QWidget 서브 클래스에서 virtual functions 을 오버라이드하거나 TapHandler 을 사용하여 Qt Quick 에서 메뉴를 열면 ), reason()가 Mouse 인 경우 QContextMenuEvent가 중복됩니다 . 이 경우 이벤트를 ignore()해야 하지만 위젯, 사용자 정의 컨트롤 또는 애플리케이션이 플랫폼별 키보드 단축키를 comes from 하는 QContextMenuEvent에 응답할 수 있는지 확인해야 합니다.

QContextMenuEvent가 ignored 인 경우, Qt는 position (일반적으로 커서 위치에서 번역됨) 아래의 다른 위젯 및/또는 항목에 전달하려고 시도합니다.

멤버 유형 문서

enum QContextMenuEvent::Reason

이 열거형은 이벤트가 전송된 이유를 설명합니다.

Constant설명
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.