我是靠谱客的博主 内向乌冬面,最近开发中收集的这篇文章主要介绍Qt之QEvent(所有事件的翻译),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Qt之QEvent(所有事件的翻译)
QEvent 类是所有事件类的基类,事件对象包含事件参数。

Qt 的主事件循环(QCoreApplication::exec())从事件队列中获取本地窗口系统事件,将它们转化为 QEvents,然后将转换后的事件发送给 QObjects。

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

QObjects 通过调用它们的 QObject::event() 函数接收事件。该函数可以在子类中重新实现,来处理自定义的事件以及添加额外的事件类型,QWidget::event() 就是一个很著名的例子。默认情况下,像 QObject::timerEvent() 和 QWidget::mouseMoveEvent() 这样的事件可以被发送给事件处理函数。QObject::installEventFilter() 允许一个对象拦截发往另一个对象的事件。

基本的 QEvent 只包含了一个事件类型参数。QEvent 的子类包含了额外的描述特定事件的参数。

 

简述
成员类型
属性文档
成员函数文档
 

成员类型
枚举QEvent::Type:

这个枚举类型定义了Qt中有效的事件类型。事件类型和每个类型的专门类如下:

常量	值	描述
QEvent::None	0	不是一个事件
QEvent::ActionAdded	114	一个新 action 被添加(QActionEvent)
QEvent::ActionChanged	113	一个 action 被改变(QActionEvent)
QEvent::ActionRemoved	115	一个 action 被移除(QActionEvent)
QEvent::ActivationChange	99	Widget 的顶层窗口激活状态发生了变化
QEvent::ApplicationActivate	121	这个枚举已被弃用,使用 ApplicationStateChange 代替
QEvent::ApplicationActivated	ApplicationActivate	这个枚举已被弃用,使用 ApplicationStateChange 代替
QEvent::ApplicationDeactivate	122	这个枚举已被弃用,使用 ApplicationStateChange 代替
QEvent::ApplicationFontChange	36	应用程序的默认字体发生了变化
QEvent::ApplicationLayoutDirectionChange	37	应用程序的默认布局方向发生了变化
QEvent::ApplicationPaletteChange	38	应用程序的默认调色板发生了变化
QEvent::ApplicationStateChange	214	应用程序的状态发生了变化
QEvent::ApplicationWindowIconChange	35	应用程序的图标发生了变化
QEvent::ChildAdded	68	一个对象获得孩子(QChildEvent)
QEvent::ChildPolished	69	一个部件的孩子被抛光(QChildEvent)
QEvent::ChildRemoved	71	一个对象时区孩子(QChildEvent)
QEvent::Clipboard	40	剪贴板的内容发生改变
QEvent::Close	19	Widget 被关闭(QCloseEvent)
QEvent::CloseSoftwareInputPanel	200	一个部件要关闭软件输入面板(SIP)
QEvent::ContentsRectChange	178	部件内容区域的外边距发生改变
QEvent::ContextMenu	82	上下文弹出菜单(QContextMenuEvent)
QEvent::CursorChange	183	部件的鼠标发生改变
QEvent::DeferredDelete	52	对象被清除后将被删除(QDeferredDeleteEvent)
QEvent::DragEnter	60	在拖放操作期间鼠标进入窗口部件(QDragEnterEvent)
QEvent::DragLeave	62	在拖放操作期间鼠标离开窗口部件(QDragLeaveEvent)
QEvent::DragMove	61	拖放操作正在进行(QDragMoveEvent)
QEvent::Drop	63	拖放操作完成(QDropEvent)
QEvent::DynamicPropertyChange	170	动态属性已添加、更改或从对象中删除
QEvent::EnabledChange	98	部件的 enabled 状态已更改
QEvent::Enter	10	鼠标进入部件的边界(QEnterEvent)
QEvent::EnterEditFocus	150	编辑部件获得焦点进行编辑,必须定义 QT_KEYPAD_NAVIGATION
QEvent::EnterWhatsThisMode	124	当应用程序进入“What’s This?”模式,发送到 toplevel 顶层部件
QEvent::Expose	206	当其屏幕上的内容无效,发送到窗口,并需要从后台存储刷新
QEvent::FileOpen	116	文件打开请求(QFileOpenEvent)
QEvent::FocusIn	8	部件或窗口获得键盘焦点(QFocusEvent)
QEvent::FocusOut	9	部件或窗口失去键盘焦点(QFocusEvent)
QEvent::FocusAboutToChange	23	部件或窗口焦点即将改变(QFocusEvent)
QEvent::FontChange	97	部件的字体发生改变
QEvent::Gesture	198	触发了一个手势(QGestureEvent)
QEvent::GestureOverride	202	触发了手势覆盖(QGestureEvent)
QEvent::GrabKeyboard	188	Item 获得键盘抓取(仅限 QGraphicsItem)
QEvent::GrabMouse	186	项目获得鼠标抓取(仅限 QGraphicsItem)
QEvent::GraphicsSceneContextMenu	159	在图形场景上的上下文弹出菜单(QGraphicsScene ContextMenuEvent)
QEvent::GraphicsSceneDragEnter	164	在拖放操作期间,鼠标进入图形场景(QGraphicsSceneDragDropEvent)
QEvent::GraphicsSceneDragLeave	166	在拖放操作期间鼠标离开图形场景(QGraphicsSceneDragDropEvent)
QEvent::GraphicsSceneDragMove	165	在场景上正在进行拖放操作(QGraphicsSceneDragDropEvent)
QEvent::GraphicsSceneDrop	167	在场景上完成拖放操作(QGraphicsSceneDragDropEvent)
QEvent::GraphicsSceneHelp	163	用户请求图形场景的帮助(QHelpEvent)
QEvent::GraphicsSceneHoverEnter	160	鼠标进入图形场景中的悬停项(QGraphicsSceneHoverEvent)
QEvent::GraphicsSceneHoverLeave	162	鼠标离开图形场景中一个悬停项(QGraphicsSceneHoverEvent)
QEvent::GraphicsSceneHoverMove	161	鼠标在图形场景中的悬停项内移动(QGraphicsSceneHoverEvent)
QEvent::GraphicsSceneMouseDoubleClick	158	鼠标在图形场景中再次按下(双击)(QGraphicsSceneMouseEvent)
QEvent::GraphicsSceneMouseMove	155	鼠标在图形场景中移动(QGraphicsSceneMouseEvent)
QEvent::GraphicsSceneMousePress	156	鼠标在图形场景中按下(QGraphicsSceneMouseEvent)
QEvent::GraphicsSceneMouseRelease	157	鼠标在图形场景中释放(QGraphicsSceneMouseEvent)
QEvent::GraphicsSceneMove	182	部件被移动(QGraphicsSceneMoveEvent)
QEvent::GraphicsSceneResize	181	部件已调整大小(QGraphicsSceneResizeEvent)
QEvent::GraphicsSceneWheel	168	鼠标滚轮在图形场景中滚动(QGraphicsSceneWheelEvent)
QEvent::Hide	18	部件被隐藏(QHideEvent)
QEvent::HideToParent	27	子部件被隐藏(QHideEvent)
QEvent::HoverEnter	127	鼠标进入悬停部件(QHoverEvent)
QEvent::HoverLeave	128	鼠标留离开悬停部件(QHoverEvent)
QEvent::HoverMove	129	鼠标在悬停部件内移动(QHoverEvent)
QEvent::IconDrag	96	窗口的主图标被拖走(QIconDragEvent)
QEvent::IconTextChange	101	部件的图标文本发生改变(已弃用)
QEvent::InputMethod	83	正在使用输入法(QInputMethodEvent)
QEvent::InputMethodQuery	207	输入法查询事件(QInputMethodQueryEvent)
QEvent::KeyboardLayoutChange	169	键盘布局已更改
QEvent::KeyPress	6	键盘按下(QKeyEvent)
QEvent::KeyRelease	7	键盘释放(QKeyEvent)
QEvent::LanguageChange	89	应用程序翻译发生改变
QEvent::LayoutDirectionChange	90	布局的方向发生改变
QEvent::LayoutRequest	76	部件的布局需要重做
QEvent::Leave	11	鼠标离开部件的边界
QEvent::LeaveEditFocus	151	编辑部件失去编辑的焦点,必须定义 QT_KEYPAD_NAVIGATION
QEvent::LeaveWhatsThisMode	125	当应用程序离开“What’s This?”模式,发送到顶层部件
QEvent::LocaleChange	88	系统区域设置发生改变
QEvent::NonClientAreaMouseButtonDblClick	176	鼠标双击发生在客户端区域外
QEvent::NonClientAreaMouseButtonPress	174	鼠标按钮按下发生在客户端区域外
QEvent::NonClientAreaMouseButtonRelease	175	鼠标按钮释放发生在客户端区域外
QEvent::NonClientAreaMouseMove	173	鼠标移动发生在客户区域外
QEvent::MacSizeChange	177	用户更改了部件的大小(仅限 OS X)
QEvent::MetaCall	43	通过 QMetaObject::invokeMethod() 调用异步方法
QEvent::ModifiedChange	102	部件修改状态发生改变
QEvent::MouseButtonDblClick	4	鼠标再次按下(QMouseEvent)
QEvent::MouseButtonPress	2	鼠标按下(QMouseEvent)
QEvent::MouseButtonRelease	3	鼠标释放(QMouseEvent)
QEvent::MouseMove	5	鼠标移动(QMouseEvent)
QEvent::MouseTrackingChange	109	鼠标跟踪状态发生改变
QEvent::Move	13	部件的位置发生改变(QMoveEvent)
QEvent::NativeGesture	197	系统检测到手势(QNativeGestureEvent)
QEvent::OrientationChange	208	屏幕方向发生改变(QScreenOrientationChangeEvent)
QEvent::Paint	12	需要屏幕更新(QPaintEvent)
QEvent::PaletteChange	39	部件的调色板发生改变
QEvent::ParentAboutToChange	131	部件的 parent 将要更改
QEvent::ParentChange	21	部件的 parent 发生改变
QEvent::PlatformPanel	212	请求一个特定于平台的面板
QEvent::PlatformSurface	217	原生平台表面已创建或即将被销毁(QPlatformSurfaceEvent)
QEvent::Polish	75	部件被抛光
QEvent::PolishRequest	74	部件应该被抛光
QEvent::QueryWhatsThis	123	如果部件有“What’s This?”帮助,应该接受事件
QEvent::ReadOnlyChange	106	部件的 read-only 状态发生改变
QEvent::RequestSoftwareInputPanel	199	部件想要打开软件输入面板(SIP)
QEvent::Resize	14	部件的大小发生改变(QResizeEvent)
QEvent::ScrollPrepare	204	对象需要填充它的几何信息(QScrollPrepareEvent)
QEvent::Scroll	205	对象需要滚动到提供的位置(QScrollEvent)
QEvent::Shortcut	117	快捷键处理(QShortcutEvent)
QEvent::ShortcutOverride	51	按下按键,用于覆盖快捷键(QKeyEvent)
QEvent::Show	17	部件显示在屏幕上(QShowEvent)
QEvent::ShowToParent	26	子部件被显示
QEvent::SockAct	50	Socket 激活,用于实现 QSocketNotifier
QEvent::StateMachineSignal	192	信号被传递到状态机(QStateMachine::SignalEvent)
QEvent::StateMachineWrapped	193	事件是一个包装器,用于包含另一个事件(QStateMachine::WrappedEvent)
QEvent::StatusTip	112	状态提示请求(QStatusTipEvent)
QEvent::StyleChange	100	部件的样式发生改变
QEvent::TabletMove	87	Wacom 写字板移动(QTabletEvent)
QEvent::TabletPress	92	Wacom 写字板按下(QTabletEvent)
QEvent::TabletRelease	93	Wacom 写字板释放(QTabletEvent)
QEvent::OkRequest	94	Ok 按钮在装饰前被按下,仅支持 Windows CE
QEvent::TabletEnterProximity	171	Wacom 写字板进入接近事件(QTabletEvent),发送到 QApplication
QEvent::TabletLeaveProximity	172	Wacom 写字板离开接近事件(QTabletEvent),发送到 QApplication
QEvent::ThreadChange	22	对象被移动到另一个线程。这是发送到此对象的最后一个事件在上一个线程中,参见:QObject::moveToThread()
QEvent::Timer	1	定时器事件(QTimerEvent)
QEvent::ToolBarChange	120	工具栏按钮在 OS X 上进行切换
QEvent::ToolTip	110	一个 tooltip 请求(QHelpEvent)
QEvent::ToolTipChange	184	部件的 tooltip 发生改变
QEvent::TouchBegin	194	触摸屏或轨迹板事件序列的开始(QTouchEvent)
QEvent::TouchCancel	209	取消触摸事件序列(QTouchEvent)
QEvent::TouchEnd	196	触摸事件序列结束(QTouchEvent)
QEvent::TouchUpdate	195	触摸屏事件(QTouchEvent)
QEvent::UngrabKeyboard	189	Item 失去键盘抓取(QGraphicsItem)
QEvent::UngrabMouse	187	Item 失去鼠标抓取(QGraphicsItem、QQuickItem)
QEvent::UpdateLater	78	部件应该排队在以后重新绘制
QEvent::UpdateRequest	77	部件应该被重绘
QEvent::WhatsThis	111	部件应该显示“What’s This”帮助(QHelpEvent)
QEvent::WhatsThisClicked	118	部件的“What’s This”帮助链接被点击
QEvent::Wheel	31	鼠标滚轮滚动(QWheelEvent)
QEvent::WinEventAct	132	发生了 Windows 特定的激活事件
QEvent::WindowActivate	24	窗口已激活
QEvent::WindowBlocked	103	窗口被模态对话框阻塞
QEvent::WindowDeactivate	25	窗户被停用
QEvent::WindowIconChange	34	窗口的图标发生改变
QEvent::WindowStateChange	105	窗口的状态(最小化、最大化或全屏)发生改变(QWindowStateChangeEvent)
QEvent::WindowTitleChange	33	窗口的标题发生改变
QEvent::WindowUnblocked	104	一个模态对话框退出后,窗口将不被阻塞
QEvent::WinIdChange	203	本地窗口的系统标识符发生改变
QEvent::ZOrderChange	126	部件的 z 值发生了改变,该事件不会发送给顶层窗口
用户事件的值应该介于 User 和 MaxUser 之间。

常量	值	描述
QEvent::User	1000	用户定义的事件
QEvent::MaxUser	65535	最后的用户事件 ID
为方便起见,可以使用 registerEventType() 函数来注册和存储一个自定义事件类型,这样做会避免意外地重用一个自定义事件类型。

属性文档
accepted : bool

设置 accept 标志意味着接收器需要该事件,不需要的事件可能会被传递给它的父窗口。默认情况下,isAccepted() 设置为 true。不能依赖于此,因为子类可能会在子类构造器中清除该标志。

出于简便考虑,accept 标志可以通过 accept() 设置,ignore() 清除。

访问函数:

bool isAccepted() const
void setAccepted(bool accepted)
成员函数文档
void QEvent::accept() 
设置事件对象的 accept 标志,等价于 setAccepted(true)。

设置 accept 标志意味着接收器需要该事件,不需要的事件可能会被传递给它的父窗口。

void QEvent::ignore() 
清除事件对象的 accept 标志,等价于 setAccepted(false)。

清除 accept 标志意味着事件接收器不需要该事件,不需要的事件可能会被传递给它的父窗口。

[static] int QEvent::registerEventType(int hint = -1) 
注册并返回一个自定义事件类型。如果 hint 是合法的,则会返回这个值;否则,会返回介于 QEvent::User 和 QEvent::MaxUser 之间的一个尚未被注册的值。如果其值不在 QEvent::User 和 QEvent::MaxUser 之间,hint 值将被忽略。

如果可用的值被使用或程序关闭,将返回 -1。该函数是线程安全的。

bool QEvent::spontaneous() const 
如果事件由应用程序之外产生的,比如一个系统事件,返回 true,否则返回 false。

对于绘制事件,该函数的返回值是未定义的。

Type QEvent::type() const 
返回事件的类型

最后

以上就是内向乌冬面为你收集整理的Qt之QEvent(所有事件的翻译)的全部内容,希望文章能够帮你解决Qt之QEvent(所有事件的翻译)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部