QEvent Class

QEvent 클래스는 모든 이벤트 클래스의 기본 클래스입니다. 이벤트 객체에는 이벤트 매개 변수가 포함됩니다. 더 보기...

공용 유형

enum Type { None, ActionAdded, ActionChanged, ActionRemoved, ActivationChange, …, MaxUser }

속성

공용 함수

QEvent(QEvent::Type type)
virtual ~QEvent()
void accept()
(since 6.0) virtual QEvent *clone() const
void ignore()
bool isAccepted() const
(since 6.0) bool isInputEvent() const
(since 6.0) bool isPointerEvent() const
(since 6.0) bool isSinglePointEvent() const
virtual void setAccepted(bool accepted)
bool spontaneous() const
QEvent::Type type() const

정적 공개 멤버

int registerEventType(int hint = -1)

상세 설명

Qt의 메인 이벤트 루프 (QCoreApplication::exec())는 이벤트 큐에서 네이티브 윈도우 시스템 이벤트를 가져와서 QEvents로 변환하고 변환된 이벤트를 QObject으로 보냅니다.

일반적으로 이벤트는 기본 창 시스템에서 가져오지만 (spontaneous() 반환 true), QCoreApplication::sendEvent() 및 QCoreApplication::postEvent() (spontaneous() 반환 false)를 사용하여 수동으로 이벤트를 전송할 수도 있습니다.

QObjects QObject::event () 함수를 호출하여 이벤트를 수신할 수 있습니다. 이 함수는 서브클래스에서 재구현하여 이벤트 처리를 사용자 정의하고 이벤트 유형을 추가할 수 있으며, QWidget::event()가 대표적인 예입니다. 기본적으로 이벤트는 QObject::timerEvent() 및 QWidget::mouseMoveEvent()와 같은 이벤트 핸들러로 전송됩니다. QObject::installEventFilter()를 사용하면 객체가 다른 객체로 향하는 이벤트를 가로챌 수 있습니다.

기본 QEvent에는 이벤트 유형 매개변수와 "accept" 플래그만 포함됩니다. 수락 플래그는 accept()로 설정하고 ignore()로 지웁니다. 이 플래그는 기본적으로 설정되어 있지만 서브클래스가 생성자에서 이 플래그를 지우도록 선택할 수 있으므로 이 플래그에 의존하지 마세요.

QEvent의 서브클래스에는 특정 이벤트를 설명하는 추가 매개변수가 포함되어 있습니다.

QObject::event(), QObject::installEventFilter(), QCoreApplication::sendEvent(), QCoreApplication::postEvent() 및 QCoreApplication::processEvents()도 참조하세요 .

멤버 유형 문서

enum QEvent::Type

이 열거형은 Qt에서 유효한 이벤트 유형을 정의합니다. 이벤트 유형과 각 유형에 대한 특수 클래스는 다음과 같습니다:

ConstantValue설명
QEvent::None0이벤트가 아닙니다.
QEvent::ActionAdded114새 액션이 추가되었습니다 (QActionEvent).
QEvent::ActionChanged113작업이 변경되었습니다 (QActionEvent).
QEvent::ActionRemoved115동작이 제거되었습니다 (QActionEvent).
QEvent::ActivationChange99위젯의 최상위 창 활성화 상태가 변경되었습니다.
QEvent::ApplicationActivate121이 열거형은 더 이상 사용되지 않습니다. 대신 ApplicationStateChange를 사용하세요.
QEvent::ApplicationActivatedApplicationActivate이 열거형은 더 이상 사용되지 않습니다. 대신 ApplicationStateChange를 사용하세요.
QEvent::ApplicationDeactivate122이 열거 형은 더 이상 사용되지 않습니다. 대신 ApplicationStateChange를 사용하십시오.
QEvent::ApplicationFontChange36기본 애플리케이션 글꼴이 변경되었습니다.
QEvent::ApplicationLayoutDirectionChange37기본 애플리케이션 레이아웃 방향이 변경되었습니다.
QEvent::ApplicationPaletteChange38기본 애플리케이션 팔레트가 변경되었습니다.
QEvent::ApplicationStateChange214애플리케이션의 상태가 변경되었습니다.
QEvent::ApplicationWindowIconChange35애플리케이션의 아이콘이 변경되었습니다.
QEvent::ChildAdded68객체가 자식(QChildEvent)을 얻습니다.
QEvent::ChildPolished69위젯 자식이 다듬어집니다 (QChildEvent).
QEvent::ChildRemoved71개체가 자식을 잃었습니다 (QChildEvent).
QEvent::ChildWindowAdded (since Qt 6.7)223창에 자식 창이 추가되었습니다.
QEvent::ChildWindowRemoved (since Qt 6.7)224창에서 자식 창이 제거되었습니다.
QEvent::Clipboard40클립보드 내용이 변경되었습니다.
QEvent::Close19위젯이 닫혔습니다 (QCloseEvent).
QEvent::CloseSoftwareInputPanel200위젯이 소프트웨어 입력 패널(SIP)을 닫으려고 합니다.
QEvent::ContentsRectChange178위젯의 콘텐츠 여백이 변경되었습니다.
QEvent::ContextMenu82컨텍스트 팝업 메뉴(QContextMenuEvent).
QEvent::CursorChange183위젯의 커서가 변경되었습니다.
QEvent::DeferredDelete52개체가 정리된 후 삭제됩니다(QDeferredDeleteEvent).
QEvent::DevicePixelRatioChange (since Qt 6.6)222이 위젯 또는 창의 기본 백킹 스토어에 대한 devicePixelRatio가 변경되었습니다.
QEvent::DragEnter60드래그 앤 드롭 작업 중에 커서가 위젯에 들어갑니다(QDragEnterEvent).
QEvent::DragLeave62드래그 앤 드롭 작업 중 커서가 위젯을 떠납니다(QDragLeaveEvent).
QEvent::DragMove61끌어서 놓기 작업이 진행 중입니다(QDragMoveEvent).
QEvent::Drop63끌어서 놓기 작업이 완료되었습니다 (QDropEvent).
QEvent::DynamicPropertyChange170객체에서 동적 속성이 추가, 변경 또는 제거되었습니다.
QEvent::EnabledChange98위젯의 활성화 상태가 변경되었습니다.
QEvent::Enter10마우스가 위젯의 경계에 들어갔습니다(QEnterEvent).
QEvent::EnterEditFocus150편집기 위젯이 편집을 위한 포커스를 얻습니다. QT_KEYPAD_NAVIGATION 를 정의해야 합니다.
QEvent::EnterWhatsThisMode124애플리케이션이 "이게 뭐야?" 모드로 전환되면 최상위 위젯으로 전송됩니다.
QEvent::Expose206화면의 콘텐츠가 무효화되어 백업 저장소에서 플러시해야 할 때 창으로 전송됩니다.
QEvent::FileOpen116파일 열기 요청(QFileOpenEvent).
QEvent::FocusIn8위젯 또는 창에 키보드 포커스 획득 (QFocusEvent).
QEvent::FocusOut9위젯 또는 창이 키보드 포커스를 잃는 경우 (QFocusEvent).
QEvent::FocusAboutToChange23위젯 또는 창 초점이 변경되려고 합니다 (QFocusEvent).
QEvent::FontChange97위젯의 글꼴이 변경되었습니다.
QEvent::Gesture198제스처가 트리거되었습니다 (QGestureEvent).
QEvent::GestureOverride202제스처 재정의가 트리거되었습니다 (QGestureEvent).
QEvent::GrabKeyboard188항목이 키보드 잡기를 얻습니다 (QGraphicsItem 만 해당).
QEvent::GrabMouse186항목이 마우스 잡기를 얻습니다 (QGraphicsItem 만 해당).
QEvent::GraphicsSceneContextMenu159그래픽 장면 위에 컨텍스트 팝업 메뉴가 표시됩니다 (QGraphicsSceneContextMenuEvent).
QEvent::GraphicsSceneDragEnter164끌어서 놓기 작업 중에 커서가 그래픽 장면에 들어갑니다(QGraphicsSceneDragDropEvent).
QEvent::GraphicsSceneDragLeave166끌어서 놓기 작업 중에 커서가 그래픽 장면을 떠납니다(QGraphicsSceneDragDropEvent).
QEvent::GraphicsSceneDragMove165장면에서 끌어서 놓기 작업이 진행 중입니다(QGraphicsSceneDragDropEvent).
QEvent::GraphicsSceneDrop167장면에 대한 끌어서 놓기 작업이 완료되었습니다(QGraphicsSceneDragDropEvent).
QEvent::GraphicsSceneHelp163사용자가 그래픽 장면에 대한 도움말을 요청합니다(QHelpEvent).
QEvent::GraphicsSceneHoverEnter160마우스 커서가 그래픽 장면의 호버 항목에 들어갑니다(QGraphicsSceneHoverEvent).
QEvent::GraphicsSceneHoverLeave162마우스 커서가 그래픽 장면의 호버 항목에서 벗어납니다(QGraphicsSceneHoverEvent).
QEvent::GraphicsSceneHoverMove161마우스 커서가 그래픽 장면의 호버 항목 내부로 이동합니다(QGraphicsSceneHoverEvent).
QEvent::GraphicsSceneMouseDoubleClick158그래픽 장면에서 마우스를 다시 누릅니다(두 번 클릭) (QGraphicsSceneMouseEvent).
QEvent::GraphicsSceneMouseMove155그래픽 장면에서 마우스 이동 (QGraphicsSceneMouseEvent).
QEvent::GraphicsSceneMousePress156그래픽 장면에서 마우스 누르기 (QGraphicsSceneMouseEvent).
QEvent::GraphicsSceneMouseRelease157그래픽 장면에서 마우스 놓기 (QGraphicsSceneMouseEvent).
QEvent::GraphicsSceneMove182위젯이 이동되었습니다 (QGraphicsSceneMoveEvent).
QEvent::GraphicsSceneResize181위젯의 크기가 조정되었습니다 (QGraphicsSceneResizeEvent).
QEvent::GraphicsSceneWheel168그래픽 장면에서 마우스 휠이 롤링되었습니다 (QGraphicsSceneWheelEvent).
QEvent::GraphicsSceneLeave220커서가 그래픽 장면을 떠났습니다 (QGraphicsSceneWheelEvent).
QEvent::Hide18위젯이 숨겨졌습니다 (QHideEvent).
QEvent::HideToParent27자식 위젯이 숨겨졌습니다.
QEvent::HoverEnter127마우스 커서가 호버 위젯에 들어갔습니다 (QHoverEvent).
QEvent::HoverLeave128마우스 커서가 호버 위젯을 떠납니다 (QHoverEvent).
QEvent::HoverMove129마우스 커서가 호버 위젯 내부로 이동합니다(QHoverEvent).
QEvent::IconDrag96창의 기본 아이콘이 드래그되었습니다(QIconDragEvent).
QEvent::IconTextChange101위젯의 아이콘 텍스트가 변경되었습니다. (사용 중단됨)
QEvent::InputMethod83입력 메서드가 사용 중입니다 (QInputMethodEvent).
QEvent::InputMethodQuery207입력 방법 쿼리 이벤트 (QInputMethodQueryEvent)
QEvent::KeyboardLayoutChange169키보드 레이아웃이 변경되었습니다.
QEvent::KeyPress6키 누르기 (QKeyEvent).
QEvent::KeyRelease7키 릴리스 (QKeyEvent).
QEvent::LanguageChange89애플리케이션 번역이 변경되었습니다.
QEvent::LayoutDirectionChange90레이아웃 방향이 변경되었습니다.
QEvent::LayoutRequest76위젯 레이아웃을 다시 만들어야 합니다.
QEvent::Leave11마우스가 위젯의 경계를 벗어났습니다.
QEvent::LeaveEditFocus151편집기 위젯이 편집 포커스를 잃었습니다. QT_KEYPAD_NAVIGATION을 정의해야 합니다.
QEvent::LeaveWhatsThisMode125애플리케이션이 "이게 뭐야?" 모드를 벗어날 때 최상위 위젯으로 전송합니다.
QEvent::LocaleChange88시스템 로캘이 변경되었습니다.
QEvent::NonClientAreaMouseButtonDblClick176클라이언트 영역 외부에서 마우스 더블 클릭이 발생했습니다(QMouseEvent).
QEvent::NonClientAreaMouseButtonPress174클라이언트 영역 외부에서 마우스 버튼 누름이 발생했습니다(QMouseEvent).
QEvent::NonClientAreaMouseButtonRelease175클라이언트 영역 외부에서 마우스 버튼 릴리스가 발생했습니다 (QMouseEvent).
QEvent::NonClientAreaMouseMove173클라이언트 영역 외부에서 마우스 이동이 발생했습니다 (QMouseEvent).
QEvent::MacSizeChange177사용자가 위젯 크기를 변경했습니다(macOS만 해당).
QEvent::MetaCall43QMetaObject::invokeMethod()를 통한 비동기 메서드 호출입니다.
QEvent::ModifiedChange102위젯 수정 상태가 변경되었습니다.
QEvent::MouseButtonDblClick4마우스를 다시 누릅니다 (QMouseEvent).
QEvent::MouseButtonPress2마우스 누름 (QMouseEvent).
QEvent::MouseButtonRelease3마우스 놓기 (QMouseEvent).
QEvent::MouseMove5마우스 이동 (QMouseEvent).
QEvent::MouseTrackingChange109마우스 추적 상태가 변경되었습니다.
QEvent::Move13위젯의 위치가 변경되었습니다 (QMoveEvent).
QEvent::NativeGesture197시스템이 제스처를 감지했습니다 (QNativeGestureEvent).
QEvent::OrientationChange208화면 방향이 변경되었습니다 (QScreenOrientationChangeEvent).
QEvent::Paint12화면 업데이트가 필요합니다 (QPaintEvent).
QEvent::PaletteChange39위젯의 팔레트가 변경되었습니다.
QEvent::ParentAboutToChange131개체 부모가 변경되려고 합니다. QWidget 와 같은 일부 개체 유형에만 전송됩니다.
QEvent::ParentChange21개체 부모가 변경되었습니다. QWidget 와 같은 일부 개체 유형으로만 전송됩니다.
QEvent::ParentWindowAboutToChange (since Qt 6.7)225부모 창이 변경되려고 합니다.
QEvent::ParentWindowChange (since Qt 6.7)226부모 창이 변경되었습니다.
QEvent::PlatformPanel212플랫폼별 패널이 요청되었습니다.
QEvent::PlatformSurface217기본 플랫폼 서페이스가 생성되었거나 곧 파괴될 예정입니다(QPlatformSurfaceEvent).
QEvent::Polish75위젯이 다듬어졌습니다.
QEvent::PolishRequest74위젯이 폴리싱되어야 합니다.
QEvent::QueryWhatsThis123위젯에 "이게 뭐예요?" 도움말(QHelpEvent)이 있는 경우 이벤트를 수락해야 합니다.
QEvent::Quit20애플리케이션이 종료되었습니다.
QEvent::ReadOnlyChange (since Qt 5.4)106위젯의 읽기 전용 상태가 변경되었습니다.
QEvent::RequestSoftwareInputPanel199위젯이 소프트웨어 입력 패널(SIP)을 열려고 합니다.
QEvent::Resize14위젯의 크기가 변경되었습니다(QResizeEvent).
QEvent::ScrollPrepare204개체의 지오메트리 정보를 입력해야 합니다(QScrollPrepareEvent).
QEvent::Scroll205개체가 제공된 위치로 스크롤해야 합니다 (QScrollEvent).
QEvent::Shortcut117단축키 처리를 위해 하위에서 키를 누릅니다 (QShortcutEvent).
QEvent::ShortcutOverride51단축키 처리를 재정의하려면 하위 키에서 키를 누릅니다 (QKeyEvent). 바로가기가 트리거되려고 하면 ShortcutOverride 이 활성 창으로 전송됩니다. 이렇게 하면 클라이언트(예: 위젯)가 이벤트를 수락하여 바로가기를 직접 처리할 것이라는 신호를 보낼 수 있습니다. 바로 가기 재정의가 수락되면 이벤트는 포커스 위젯에 일반 키 누름으로 전달됩니다. 그렇지 않으면 바로 가기 동작이 있는 경우 해당 동작이 트리거됩니다.
QEvent::Show17위젯이 화면에 표시되었습니다(QShowEvent).
QEvent::ShowToParent26하위 위젯이 표시되었습니다.
QEvent::SockAct50소켓이 활성화되어 QSocketNotifier 을 구현하는 데 사용되었습니다.
QEvent::StateMachineSignal192상태 머신으로 전달된 신호 (QStateMachine::SignalEvent).
QEvent::StateMachineWrapped193이벤트가 다른 이벤트에 대한 래퍼, 즉 다른 이벤트를 포함하고 있습니다 (QStateMachine::WrappedEvent).
QEvent::StatusTip112상태 팁이 요청됩니다 (QStatusTipEvent).
QEvent::StyleChange100위젯의 스타일이 변경되었습니다.
QEvent::TabletMove87와콤 타블렛 이동 (QTabletEvent).
QEvent::TabletPress92와콤 타블렛 누르기 (QTabletEvent).
QEvent::TabletRelease93와콤 태블릿 출시 (QTabletEvent).
QEvent::TabletEnterProximity171Wacom 태블릿 근접 이벤트 (QTabletEvent), QApplication 으로 전송.
QEvent::TabletLeaveProximity172Wacom 타블렛 근접 이벤트 (QTabletEvent), QApplication 으로 전송.
QEvent::TabletTrackingChange (since Qt 5.9)219Wacom 타블렛 추적 상태가 변경되었습니다.
QEvent::ThreadChange22개체가 다른 스레드로 이동되었습니다. 이것은 이전 스레드에서 이 개체에 전송된 마지막 이벤트입니다. QObject::moveToThread ()를 참조하세요.
QEvent::Timer1일반 타이머 이벤트 (QTimerEvent).
QEvent::ToolBarChange120macOS에서 툴바 버튼이 토글되었습니다.
QEvent::ToolTip110툴팁이 요청되었습니다 (QHelpEvent).
QEvent::ToolTipChange184위젯의 툴팁이 변경되었습니다.
QEvent::TouchBegin194터치 스크린 또는 트랙 패드 이벤트 시퀀스 시작 (QTouchEvent).
QEvent::TouchCancel209터치 이벤트 시퀀스 취소 (QTouchEvent).
QEvent::TouchEnd196터치 이벤트 시퀀스 종료 (QTouchEvent).
QEvent::TouchUpdate195터치 스크린 이벤트 (QTouchEvent).
QEvent::UngrabKeyboard189항목이 키보드 잡기를 잃습니다 (QGraphicsItem 전용 ).
QEvent::UngrabMouse187항목이 마우스 잡기를 잃습니다 (QGraphicsItem, QQuickItem).
QEvent::UpdateLater78위젯을 나중에 다시 칠할 수 있도록 대기열에 추가해야 합니다.
QEvent::UpdateRequest77위젯을 다시 칠해야 합니다.
QEvent::WhatsThis111위젯에 "이게 뭐예요?" 도움말(QHelpEvent)이 표시되어야 합니다.
QEvent::WhatsThisClicked118위젯의 "이게 뭐예요?" 도움말의 링크를 클릭했습니다.
QEvent::Wheel31마우스 휠이 롤링되었습니다(QWheelEvent).
QEvent::WinEventAct132Windows 관련 활성화 이벤트가 발생했습니다.
QEvent::WindowActivate24창이 활성화되었습니다.
QEvent::WindowBlocked103창이 모달 대화 상자에 의해 차단되었습니다.
QEvent::WindowDeactivate25창이 비활성화되었습니다.
QEvent::WindowIconChange34창의 아이콘이 변경되었습니다.
QEvent::WindowStateChange105window's state (최소화, 최대화 또는 전체 화면)이 변경되었습니다(QWindowStateChangeEvent).
QEvent::WindowTitleChange33창 제목이 변경되었습니다.
QEvent::WindowUnblocked104모달 대화 상자가 종료된 후 창이 차단 해제되었습니다.
QEvent::WinIdChange203이 기본 위젯의 창 시스템 식별자가 변경되었습니다.
QEvent::ZOrderChange126위젯의 z 순서가 변경되었습니다. 이 이벤트는 최상위 창으로 전송되지 않습니다.

사용자 이벤트의 값은 UserMaxUser 사이여야 합니다:

상수설명
QEvent::User1000사용자 정의 이벤트.
QEvent::MaxUser65535마지막 사용자 이벤트 ID.

편의를 위해 registerEventType() 함수를 사용하여 애플리케이션에 대한 사용자 지정 이벤트 유형을 등록하고 예약할 수 있습니다. 이렇게 하면 애플리케이션의 다른 곳에서 이미 사용 중인 사용자 지정 이벤트 유형을 실수로 재사용하는 것을 방지할 수 있습니다.

속성 문서

accepted : bool

이 속성은 이벤트 객체의 accept 플래그를 보유합니다.

accept 매개변수를 설정하면 이벤트 수신자가 이벤트를 원한다는 것을 나타냅니다. 원치 않는 이벤트는 부모 위젯으로 전파될 수 있습니다. 기본적으로 isAccepted()는 true로 설정되어 있지만, 서브클래스가 생성자에서 이 값을 지울 수 있으므로 이 값에 의존하지 마세요.

편의를 위해 accept()로 수락 플래그를 설정하고 ignore()로 지울 수도 있습니다.

참고: QPointerEvent 를 수락하면 이벤트가 전달하는 모든 points 을 암시적으로 accepts 수락합니다.

액세스 함수:

bool isAccepted() const
virtual void setAccepted(bool accepted)

멤버 함수 문서

[explicit] QEvent::QEvent(QEvent::Type type)

type 타입의 이벤트 객체를 생성합니다.

[virtual noexcept] QEvent::~QEvent()

이벤트를 삭제합니다. posted 인 경우 게시할 이벤트 목록에서 제거됩니다.

void QEvent::accept()

이벤트 객체의 accept 플래그를 설정합니다( setAccepted(참)을 호출하는 것과 동일).

accept 매개변수를 설정하면 이벤트 수신자가 이벤트를 원한다는 것을 나타냅니다. 원치 않는 이벤트는 부모 위젯으로 전파될 수 있습니다.

ignore()도 참조하세요 .

[virtual, since 6.0] QEvent *QEvent::clone() const

이 이벤트의 동일한 복사본을 생성하고 반환합니다.

이 함수는 Qt 6.0에 도입되었습니다.

void QEvent::ignore()

이벤트 객체의 accept 플래그 매개 변수를 지웁니다( setAccepted(false)를 호출하는 것과 동일).

accept 매개변수를 지우면 이벤트 수신자가 이벤트를 원하지 않음을 나타냅니다. 원치 않는 이벤트가 부모 위젯으로 전파될 수 있습니다.

accept()도 참조하세요 .

[noexcept, since 6.0] bool QEvent::isInputEvent() const

이벤트 객체가 QInputEvent 또는 그 서브클래스 중 하나인 경우 true 를 반환합니다.

이 함수는 Qt 6.0에 도입되었습니다.

[noexcept, since 6.0] bool QEvent::isPointerEvent() const

이벤트 객체가 QPointerEvent 또는 그 서브클래스 중 하나인 경우 true 를 반환합니다.

이 함수는 Qt 6.0에 도입되었습니다.

[noexcept, since 6.0] bool QEvent::isSinglePointEvent() const

이벤트 객체가 QSinglePointEvent 의 서브 클래스인 경우 true 를 반환합니다.

이 함수는 Qt 6.0에 도입되었습니다.

[static noexcept] int QEvent::registerEventType(int hint = -1)

사용자 정의 이벤트 유형을 등록하고 반환합니다. 제공된 hint 을 사용할 수 있는 경우 사용되며, 그렇지 않으면 아직 등록되지 않은 QEvent::UserQEvent::MaxUser 사이의 값을 반환합니다. 값이 QEvent::UserQEvent::MaxUser 사이가 아닌 경우 hint 은 무시됩니다.

사용 가능한 모든 값을 이미 사용했거나 프로그램이 종료 중이면 -1을 반환합니다.

참고: 이 함수는 스레드에 안전합니다.

bool QEvent::spontaneous() const

이벤트가 애플리케이션 외부에서 발생한 경우(시스템 이벤트) true 를 반환하고, 그렇지 않으면 false 을 반환합니다.

QEvent::Type QEvent::type() const

이벤트 유형을 반환합니다.

© 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.