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. 이는 마우스 오른쪽 버튼(클릭 또는 드래그)을 사용하여 특정 항목(아이콘, 그리기 요소 또는 ItemView의 셀)을 선택한 후, 마우스 오른쪽 버튼을 놓자마자 컨텍스트 메뉴가 표시되는 Windows UI 패턴을 반영하기 위함입니다. (메뉴의 동작은 선택된 항목에 적용되도록 의도되어 있습니다.) 따라서 Windows에서는 마우스를 놓을 때 QContextMenuEvent가 전송되는 반면, 다른 플랫폼에서는 마우스 버튼을 누를 때 전송됩니다. Qt는 기본적으로 platform convention 를 따릅니다.
또한 Pane 와 같이 마우스 이벤트를 수신하면서도 마우스 누름 또는 클릭 후 QContextMenuEvent를 수신하는 일부 Qt Quick Controls 도 있습니다.
마우스 누름 시 컨텍스트 메뉴를 열고, 메뉴 항목 위로 드래그한 후 놓을 때 해당 항목을 선택하는 ‘누름-드래그-놓기(press-drag-release)’ 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-construct로 생성합니다. 이 함수는 삭제되었습니다.
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 일 수 있습니다.
x(), y(), globalPos()도 참조하십시오 .
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.