Класс QEvent
Класс QEvent является базовым классом всех классов событий. Объекты событий содержат параметры событий. Подробнее...
| Заголовок: | #include <QEvent> |
| CMake: | find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Наследуется от: | QActionEvent, QChildEvent, QCloseEvent, QDragLeaveEvent, QDropEvent, QDynamicPropertyChangeEvent, QExposeEvent, QFileOpenEvent, QFocusEvent, QGestureEvent, QGraphicsSceneEvent, QHelpEvent, QHideEvent, QIconDragEvent, QInputEvent, QInputMethodEvent, QInputMethodQueryEvent, QMoveEvent, QPaintEvent, QPlatformSurfaceEvent, QResizeEvent, QScrollEvent, QScrollPrepareEvent, QShortcutEvent, QShowEvent, QStateMachine::SignalEvent, QStateMachine::WrappedEvent, QStatusTipEvent, QTimerEvent, QWhatsThisClickedEvent и QWindowStateChangeEvent |
Типы публичного доступа
| перечисление | Type { None, ActionAdded, ActionChanged, ActionRemoved, ActivationChange, …, MaxUser } |
Свойства
- accepted : bool
Публичные функции
| QEvent(QEvent::Type type) | |
| virtual | ~QEvent() |
| void | accept() |
| virtual QEvent * | clone() const |
| void | ignore() |
| bool | isAccepted() const |
| bool | isInputEvent() const |
| bool | isPointerEvent() const |
| 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() и сбрасывается с помощью ignore(). Он устанавливается по умолчанию, но не полагайтесь на это, так как подклассы могут сбросить его в своем конструкторе.
Подклассы QEvent содержат дополнительные параметры, которые описывают конкретное событие.
См. также QObject::event(), QObject::installEventFilter(), QCoreApplication::sendEvent(), QCoreApplication::postEvent() и QCoreApplication::processEvents().
Документация по типу члена
перечисление QEvent::Type
Это перечисление определяет допустимые типы событий в Qt. Типы событий и специализированные классы для каждого типа представлены ниже:
| Постоянная | Значение | Описание |
|---|---|---|
QEvent::None |
0 |
Не событие. |
QEvent::ActionAdded |
114 |
Добавлен новый параметр (QActionEvent). |
QEvent::ActionChanged |
113 |
Изменено действие (QActionEvent). |
QEvent::ActionRemoved |
115 |
Удалено действие (QActionEvent). |
QEvent::ActivationChange |
99 |
Изменилось состояние активации главного окна виджета. |
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 |
Виджет закрыт (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 |
Изменилось состояние активности виджета. |
QEvent::Enter |
10 |
Мышь входит в границы виджета (QEnterEvent). |
QEvent::EnterEditFocus |
150 |
Редактор-виджет получает фокус для редактирования. QT_KEYPAD_NAVIGATION должно быть определено. |
QEvent::EnterWhatsThisMode |
124 |
Отправляется верхним виджетам, когда приложение входит в режим «Что это?». |
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 |
Элемент получает захват клавиатуры (QGraphicsItem только). |
QEvent::GrabMouse |
186 |
Элемент получает захват мыши (QGraphicsItem только). |
QEvent::GraphicsSceneContextMenu |
159 |
Контекстное всплывающее меню над графической сценой (QGraphicsSceneContextMenuEvent). |
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::GraphicsSceneLeave |
220 |
Курсор мыши покидает графическую сцену (QGraphicsSceneWheelEvent). |
QEvent::Hide |
18 |
Виджет был скрыт (QHideEvent). |
QEvent::HideToParent |
27 |
Дочерний виджет был скрыт. |
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 |
Отправка виджетам верхнего уровня при выходе из режима «Что это?». |
QEvent::LocaleChange |
88 |
Изменился системный регион. |
QEvent::NonClientAreaMouseButtonDblClick |
176 |
Произошел двойной щелчок мыши за пределами области клиента (QMouseEvent). |
QEvent::NonClientAreaMouseButtonPress |
174 |
Произошло нажатие кнопки мыши за пределами области клиента (QMouseEvent). |
QEvent::NonClientAreaMouseButtonRelease |
175 |
Произошло отпускание кнопки мыши за пределами области клиента (QMouseEvent). |
QEvent::NonClientAreaMouseMove |
173 |
Произошло перемещение мыши за пределами области клиента (QMouseEvent). |
QEvent::MacSizeChange |
177 |
Пользователь изменил размеры своего виджета (только macOS). |
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 |
Родительский виджет виджета собирается измениться. |
QEvent::ParentChange |
21 |
Родительский виджет виджета изменился. |
QEvent::PlatformPanel |
212 |
Запрошен платформный специфичный элемент управления. |
QEvent::PlatformSurface |
217 |
Создана или собирается быть уничтожена нативная платформа поверхности (QPlatformSurfaceEvent). |
QEvent::PolishRequest |
74 |
Виджет должен быть отполирован. |
QEvent::QueryWhatsThis |
123 |
Виджет должен принять событие, если у него есть помощь «Что это?» (QHelpEvent). |
QEvent::ReadOnlyChange |
106 |
Состояние только для чтения виджета изменилось (с Qt 5.4). |
QEvent::RequestSoftwareInputPanel |
199 |
Виджет хочет открыть панель ввода программного обеспечения (SIP). |
QEvent::Resize |
14 |
Изменился размер виджета (QResizeEvent). |
QEvent::ScrollPrepare |
204 |
Объект должен заполнить информацию о своей геометрии (QScrollPrepareEvent). |
QEvent::Scroll |
205 |
Объект должен прокрутить до заданной позиции (QScrollEvent). |
QEvent::Shortcut |
117 |
Нажатие клавиши в дочернем элементе для обработки сочетания клавиш (QShortcutEvent). |
QEvent::ShortcutOverride |
51 |
Нажатие клавиши в дочернем элементе для переопределения обработки сочетаний клавиш (QKeyEvent). Приближается сочетание клавиш, ShortcutOverride отправляется активному окну. Это позволяет клиентам (например, виджетам) сигнализировать, что они будут обрабатывать сочетание клавиш самостоятельно, приняв событие. Если переопределение сочетания клавиш принято, событие передается как обычное нажатие клавиши на виджет, имеющий фокус. В противном случае, срабатывает действие сочетания клавиш, если оно существует. |
QEvent::Show |
17 |
Виджет был показан на экране (QShowEvent). |
QEvent::ShowToParent |
26 |
Дочерний виджет был показан. |
QEvent::SockAct |
50 |
Сокет активирован, используется для реализации QSocketNotifier. |
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::TabletLeaveProximity |
172 |
Событие удаления планшета Wacom из близости (QTabletEvent), отправленное в QApplication. |
QEvent::TabletTrackingChange |
219 |
Изменилось состояние отслеживания планшета Wacom (с Qt 5.9). |
QEvent::Timer |
1 |
Регулярные события таймера (QTimerEvent). |
QEvent::ToolBarChange |
120 |
Кнопка на панели инструментов переключается на macOS. |
QEvent::ToolTip |
110 |
Запрошена подсказка (QHelpEvent). |
QEvent::ToolTipChange |
184 |
Подсказка виджета была изменена. |
QEvent::TouchBegin |
194 |
Начало последовательности событий сенсорного экрана или трекпада (QTouchEvent). |
QEvent::TouchCancel |
209 |
Отмена последовательности событий касания (QTouchEvent). |
QEvent::TouchEnd |
196 |
Конец последовательности событий касания (QTouchEvent). |
QEvent::TouchUpdate |
195 |
Событие сенсорного экрана (QTouchEvent). |
QEvent::UngrabKeyboard |
189 |
Элемент теряет захват клавиатуры (только QGraphicsItem). |
QEvent::UngrabMouse |
187 |
Элемент теряет захват мыши (QGraphicsItem, QQuickItem). |
QEvent::UpdateLater |
78 |
Виджет должен быть помещен в очередь для перерисовки в более позднее время. |
QEvent::UpdateRequest |
77 |
Виджет должен быть перерисован. |
QEvent::WhatsThis |
111 |
Виджет должен отобразить справку "Что это?" (QHelpEvent). |
QEvent::WhatsThisClicked |
118 |
Была нажата ссылка в подсказке "Что это?". |
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 |
Идентификатор последнего пользовательского события. |
Для удобства вы можете использовать функцию registerEventType(), чтобы зарегистрировать и зарезервировать тип пользовательского события для вашего приложения. Это поможет избежать случайного повторного использования типа пользовательского события, уже используемого в другом месте вашего приложения.
Документация по свойствам
accepted : bool
Это свойство содержит флаг принятия события объекта.
Установка параметра accept указывает, что получатель события желает обработать событие. Нежелательные события могут быть переданы родительскому виджету. По умолчанию, isAccepted() устанавливается в true, но не полагайтесь на это, так как подклассы могут сбросить его в своём конструкторе.
Для удобства, флаг принятия также можно установить с помощью accept(), и сбросить с помощью ignore().
Примечание: Принятие QPointerEvent неявно принимает все точки, которые содержит событие.
Функции доступа:
| bool | isAccepted() const |
| virtual void | setAccepted(bool accepted) |
Документация по членам-функциям
QEvent::QEvent(QEvent::Type type)
Конструирует объект события типа type.
[virtual] QEvent::~QEvent()
Уничтожает событие. Если оно было опубликовано, оно будет удалено из списка событий, которые нужно опубликовать.
void QEvent::accept()
Устанавливает флаг принятия события объекта, что эквивалентно вызову setAccepted(true).
Установка параметра accept указывает, что получатель события желает обработать событие. Нежелательные события могут быть переданы родительскому виджету.
См. также ignore().
[virtual, since 6.0] QEvent *QEvent::clone() const
Создаёт и возвращает идентичную копию этого события.
Эта функция была добавлена в Qt 6.0.
void QEvent::ignore()
Очищает параметр accept события, что эквивалентно вызову setAccepted(false).
Очистка параметра accept указывает, что получатель события не хочет обрабатывать его. Нежелательные события могут быть переданы родительскому виджету.
См. такжеaccept().
[since 6.0] bool QEvent::isInputEvent() const
Возвращает true, если объект события является QInputEvent или одним из его подклассов.
Эта функция была добавлена в Qt 6.0.
[since 6.0] bool QEvent::isPointerEvent() const
Возвращает true, если объект события является QPointerEvent или одним из его подклассов.
Эта функция была добавлена в Qt 6.0.
[since 6.0] bool QEvent::isSinglePointEvent() const
Возвращает true, если объект события является подклассом QSinglePointEvent.
Эта функция была добавлена в Qt 6.0.
[static] int QEvent::registerEventType(int hint = -1)
Регистрирует и возвращает тип пользовательского события. Предоставленное значение hint будет использоваться, если доступно, в противном случае возвращается значение от QEvent::User до QEvent::MaxUser, которое еще не зарегистрировано. Значение hint игнорируется, если оно не находится в диапазоне от QEvent::User до QEvent::MaxUser.
Возвращает -1, если все доступные значения уже заняты или программа завершается.
Примечание: Эта функция безопасна для потоков.
bool QEvent::spontaneous() const
Возвращает true, если событие возникло вне приложения (система); в противном случае возвращает false.
QEvent::Type QEvent::type() const
Возвращает тип события.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qevent.html