QEvent 类

QEvent 类是所有事件类的基类。事件对象包含事件参数。 更多...

公共类型

枚举类型 { None, ActionAdded, ActionChanged, ActionRemoved, ActivationChange, …, MaxUser }

属性

公共函数

QEvent(QEvent::Type type)
虚拟~QEvent()
void接受()
(从 6.0 开始) 虚拟 QEvent *clone() const
void忽略()
boolisAccepted() const
(从 6.0 开始) boolisInputEvent() const
(从 6.0 开始) boolisPointerEvent() const
(从 6.0 开始) boolisSinglePointEvent() const
virtual voidsetAccepted(bool accepted)
boolspontaneous() const
QEvent::Typetype() const

静态公共成员

intregisterEventType(int hint = -1)

详细说明

Qt的主事件循环(QCoreApplication::exec())从事件队列中获取原生窗口系统事件,将它们转换为QEvent,并将转换后的事件发送到QObject。

通常,事件来自底层窗口系统(spontaneous()返回true),但也可以使用QCoreApplication::sendEvent()和QCoreApplication::postEvent()手动发送事件(spontaneous()返回false)。

QObjects通过调用其QObject::event()函数接收事件。函数可以在子类中重新实现以自定义事件处理并添加附加的事件类型;《QWidget::event()是一个典型的例子。默认情况下,事件被发送到事件处理程序,例如QObject::timerEvent()和QWidget::mouseMoveEvent()。QObject::installEventFilter()允许对象拦截本来为另一个对象的事件。

基本的事件包含一个事件类型参数和一个"接受"标志。这个标志由accept()设置,由ignore()清除。它默认设置为,但不依赖于它,因为子类可以在其构造函数中将其清除。

QEvent的子类包含描述特定事件的附加参数。

另见QObject::event(),QObject::installEventFilter(),QCoreApplication::sendEvent(),QCoreApplication::postEvent()和QCoreApplication::processEvents()。

成员类型文档

enum QEvent::Type

此枚举类型定义了Qt中的有效事件类型。事件类型和每种类型的专用类如下

常量描述
QEvent::None0不是事件。
QEvent::ActionAdded114添加了一个新操作(QActionEvent)。
QEvent::ActionChanged113已更改操作(QActionEvent)。
QEvent::ActionRemoved115已删除操作(QActionEvent)。
QEvent::ActivationChange99widget的最高级窗口激活状态已更改。
QEvent::ApplicationActivate121此枚举已被弃用。请使用ApplicationStateChange代替。
QEvent::ApplicationActivatedApplicationActivate此枚举已被弃用。请使用ApplicationStateChange代替。
QEvent::ApplicationDeactivate122此枚举已被弃用。请使用ApplicationStateChange代替。
QEvent::ApplicationFontChange36默认应用程序字体已更改。
QEvent::ApplicationLayoutDirectionChange37默认应用程序布局方向已更改。
QEvent::ApplicationPaletteChange38默认应用程序调色板已更改。
QEvent::ApplicationStateChange214应用程序的状态已更改。
QEvent::ApplicationWindowIconChange35应用程序的图标已更改。
QEvent::ChildAdded68对象获得了一个子对象(QChildEvent)。
QEvent::ChildPolished69widget子对象已抛光(QChildEvent)。
QEvent::ChildRemoved71对象失去了一个子对象(QChildEvent)。
QEvent::ChildWindowAdded (自 Qt 6.7 开始)223向窗口添加了子窗口。
QEvent::ChildWindowRemoved (自 Qt 6.7 开始)224从窗口中移除了子窗口。
QEvent::Clipboard40剪贴板内容已更改。
QEvent::Close19小部件被关闭(《QCloseEvent》)。
QEvent::CloseSoftwareInputPanel200小部件希望关闭软件输入面板(SIP)。
QEvent::ContentsRectChange178小部件的内容矩形边距已更改。
QEvent::ContextMenu82上下文弹出菜单(《QContextMenuEvent》)。
QEvent::CursorChange183小部件的光标已更改。
QEvent::DeferredDelete52事件处理完毕后,将删除此对象(QDeferredDeleteEvent)。
QEvent::DevicePixelRatioChange (自 Qt 6.6 开始)222此小部件或窗口的底层 backing store 的 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当窗口的屏幕内容无效并需要从 backing store 中刷新时,向窗口发送。
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.html” translate="no">QHideEvent)。
QEvent::HideToParent27一个子小部件已被隐藏。
QEvent::HoverEnter127鼠标光标进入悬浮小部件(《 qhoverevent.html” translate="no">QHoverEvent)。
QEvent::HoverLeave128鼠标光标离开悬浮小部件(《 qhoverevent.html” translate="no">QHoverEvent)。
QEvent::HoverMove129鼠标光标在悬浮小部件内移动(《 qhoverevent.html” translate="no">QHoverEvent)。
QEvent::IconDrag96窗口的主要图标被拖走(《 qicondragevent.html” translate="no">QIconDragEvent)。
QEvent::IconTextChange101小部件的图标文本已更改。 (弃用)
QEvent::InputMethod83正在使用输入方法(《 qinputmethodevent.html” translate="no">QInputMethodEvent)。
QEvent::InputMethodQuery207一个输入方法查询事件(《 qinputmethodqueryevent.html” translate="no">QInputMethodQueryEvent)
QEvent::KeyboardLayoutChange169键盘布局已更改。
QEvent::KeyPress6按键(《 qkeyevent.html” translate="no">QKeyEvent)。
QEvent::KeyRelease7按键释放(《 qkeyevent.html” translate="no">QKeyEvent)。
QEvent::LanguageChange89应用程序翻译已更改。
QEvent::LayoutDirectionChange90布局的方向已更改。
QEvent::LayoutRequest76小部件布局需要重新构建。
QEvent::Leave11鼠标离开小部件的边界。
QEvent::LeaveEditFocus151编辑器小部件失去编辑焦点。必须定义 QT_KEYPAD_NAVIGATION。
QEvent::LeaveWhatsThisMode125当应用程序离开“这是什么?”模式时,发送到顶级小部件。
QEvent::LocaleChange88系统区域设置已更改。
QEvent::NonClientAreaMouseButtonDblClick176在客户端区域外发生了鼠标双击(《 qmouseevent.html” translate="no">QMouseEvent)。
QEvent::NonClientAreaMouseButtonPress174客户端区域外发生了鼠标按钮按下(《 qmouseevent.html” translate="no">QMouseEvent)。
QEvent::NonClientAreaMouseButtonRelease175客户端区域外发生了鼠标按钮释放(《 qmouseevent.html” translate="no">QMouseEvent)。
QEvent::NonClientAreaMouseMove173客户端区域外发生了鼠标移动(《 qmouseevent.html” translate="no">QMouseEvent)。
QEvent::MacSizeChange177用户更改了其小部件的大小(仅限macOS)。
QEvent::MetaCall43通过 QMetaObject::invokeMethod 调用异步方法。
QEvent::ModifiedChange102小部件的修改状态已更改。
QEvent::MouseButtonDblClick4再次按下鼠标(《 qmouseevent.html” translate="no">QMouseEvent)。
QEvent::MouseButtonPress2按下鼠标(《 qmouseevent.html” translate="no">QMouseEvent)。
QEvent::MouseButtonRelease3释放鼠标(《 qmouseevent.html” translate="no">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 (自 Qt 6.7)225父窗口即将更改。
QEvent::ParentWindowChange (自 Qt 6.7)226父窗口已更改。
QEvent::PlatformPanel212请求平台特定面板。
QEvent::PlatformSurface217已创建或即将销毁原生平台表面 (QPlatformSurfaceEvent).
QEvent::Polish75窗口已精炼。
QEvent::PolishRequest74窗口应进行精炼。
QEvent::QueryWhatsThis123窗口应接受事件,如果它有“这是什么?”帮助 (QHelpEvent)。
QEvent::Quit20应用程序已退出。
QEvent::ReadOnlyChange (自 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::TabletMove87Wacom平板移动 (QTabletEvent).
QEvent::TabletPress92Wacom平板按下 (QTabletEvent).
QEvent::TabletRelease93Wacom平板释放 (QTabletEvent).
QEvent::TabletEnterProximity171Wacom平板接近事件 (QTabletEvent),发送到 QApplication
QEvent::TabletLeaveProximity172Wacom平板离开接近事件 (QTabletEvent),发送到 QApplication
QEvent::TabletTrackingChange (自 Qt 5.9)219Wacom数位板跟踪状态已更改。
QEvent::ThreadChange22对象已移动到另一个线程。这是在上一线程中向该对象发送的最后一个事件。请参阅QObject::moveToThread
QEvent::Timer1常规定时器事件 (QTimerEvent).
QEvent::ToolBarChange120在macOS上切换工具栏按钮。
QEvent::ToolTip110请求了工具提示 (QHelpEvent).
QEvent::ToolTipChange184小部件的工具提示已更改。
QEvent::TouchBegin194连续触摸屏或轨迹板事件的开始 (QTouchEvent).
QEvent::TouchCancel209取消触摸事件序列 (QTouchEvent).
QEvent::TouchEnd196触摸事件序列的结束 (QTouchEvent).
QEvent::TouchUpdate195触摸屏事件 (QTouchEvent).
QEvent::UngrabKeyboard189项目失去键盘捕获 (QGraphicsItem仅限)。
QEvent::UngrabMouse187项目失去鼠标捕获 (QGraphicsItemQQuickItem)。
QEvent::UpdateLater78小部件应排队稍后重绘。
QEvent::UpdateRequest77小部件应重绘。
QEvent::WhatsThis111小部件应显示“这是什么?”帮助 (QHelpEvent).
QEvent::WhatsThisClicked118在小部件的“这是什么?”帮助中的链接被点击。
QEvent::Wheel31鼠标滚轮滚动 (QWheelEvent).
QEvent::WinEventAct132发生了一个Windows特定的激活事件。
QEvent::WindowActivate24窗口已被激活。
QEvent::WindowBlocked103窗口被模态对话框阻止。
QEvent::WindowDeactivate25窗口已被停用。
QEvent::WindowIconChange34窗口的图标已更改。
QEvent::WindowStateChange105窗口的状态(最小化、最大化或全屏)已更改 (QWindowStateChangeEvent).
QEvent::WindowTitleChange33窗口标题已更改。
QEvent::WindowUnblocked104模态对话框退出后,窗口被取消阻止。
QEvent::WinIdChange203此本地小部件的窗口系统标识符已更改。
QEvent::ZOrderChange126小部件的z顺序已更改。此事件永远不会发送到顶级窗口。

用户事件应具有在 UserMaxUser 之间的值

常量描述
QEvent::User1000用户定义的事件。
QEvent::MaxUser65535最后一个用户事件ID。

为了方便起见,您可以使用 registerElementType() 函数注册并保留为您的应用程序创建的自定义事件类型。这样做可以避免在您的应用程序的其他地方意外重复使用自定义事件类型。

属性文档

accepted : bool

此属性持有事件对象的接收标志。

设置接受参数表示事件接收者想要事件。不需要的事件可能会传播到父小部件。默认情况下,isAccepted() 设置为 true,但不要依赖于这一点,因为子类可能会在其构造函数中选择将其清除。

为了方便起见, accept 标志还可以通过 accept() 来设置,通过 ignore() 清除。

注意:接受 QPointerEvent 会隐式接受事件所携带的所有

访问函数

boolisAccepted() const
virtual voidsetAccepted(bool accepted)

成员函数文档

[显式] QEvent::QEvent(QEvent::Type type)

构建一个类型为 type 的事件对象。

[虚函数, noexcept] QEvent::~QEvent()

销毁事件。如果在 传送,它将从即将传送的事件列表中移除。

void QEvent::accept()

设置事件对象的接受标志,等同于调用 setAccepted(true)。

设置接受参数表示事件接收者想要该事件。不想要的事件可能会传播到父小部件。

另请参阅ignore

[虚拟,自6.0版本以来] QEvent *QEvent::clone() const

创建并返回此事件的相同副本。

此函数自Qt 6.0版本开始引入。

void QEvent::ignore()

清除事件对象的接受标志参数,等同于调用 setAccepted(false)。

清除接受参数表示事件接收者不想要该事件。不想要的事件可能会传播到父小部件。

另请参阅accept

[noexcept,自6.0版本以来] bool QEvent::isInputEvent() const

如果事件对象是 QInputEvent 或其子类之一,则返回 true

此函数自Qt 6.0版本开始引入。

[noexcept,自6.0版本以来] bool QEvent::isPointerEvent() const

如果事件对象是 QPointerEvent 或其子类之一,则返回 true

此函数自Qt 6.0版本开始引入。

[noexcept,自6.0版本以来] bool QEvent::isSinglePointEvent() const

如果事件对象是 QSinglePointEvent 的子类,则返回 true

此函数自Qt 6.0版本开始引入。

[静态,noexcept] int QEvent::registerEventType(int hint = -1)

注册并返回一个自定义事件类型。如果提供了 hint 且可用,将使用该提示。否则,将返回一个介于 QEvent::UserQEvent::MaxUser 之间的值,该值尚未注册。如果 hint 的值不在 QEvent::UserQEvent::MaxUser 之间,则忽略该 hint

如果所有可用的值都已占用或程序正在关闭,则返回 -1。

注意: 此函数是 线程安全 的。

bool QEvent::spontaneous() const

如果事件来源于应用程序外部(系统事件),则返回 true;否则返回 false

QEvent::Type QEvent::type() const

返回事件类型。

© 2024 Qt 公司有限公司。本文件中包含的文档贡献归其各自所有者所有。本文件中的文档受自由软件基金会发布的GNU 自由文档许可证第 1.3 版的许可。Qt 及相关标志是芬兰及/或全球其他国家的 Qt 公司有限公司的商标。所有其他商标均为其各自所有者的财产。