Класс 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, QStatusTipEvent, QTimerEvent, QWhatsThisClickedEvent и QWindowStateChangeEvent |
Публичные типы
| перечисление | Тип { Нет, ActionAdded, ActionChanged, ActionRemoved, ActivationChange, …, MaxUser } |
Свойства
- accepted : bool
Публичные функции
| QEvent(QEvent::Type type) | |
| виртуальный | ~QEvent() |
| void | accept() |
| виртуальный QEvent * | clone() const |
| void | ignore() |
| bool | isAccepted() const |
| bool | isInputEvent() const |
| bool | isPointerEvent() const |
| bool | isSinglePointEvent() const |
| виртуальный 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::Тип
Это перечисление типов определяет допустимые типы событий в Qt. Типы событий и специализированные классы для каждого типа приведены ниже:
| Константа | Значение | Описание |
|---|---|---|
QEvent::None |
0 |
Не событие. |
QEvent::ActionAdded |
114 |
Добавлен новый action (QActionEvent). |
QEvent::ActionChanged |
113 |
Изменён action (QActionEvent). |
QEvent::ActionRemoved |
115 |
Удален action (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::Polish |
75 |
Элемент отполирован. |
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::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::TabletEnterProximity |
171 |
Событие приближения планшета Wacom (QTabletEvent), отправлено в QApplication. |
QEvent::TabletLeaveProximity |
172 |
Событие удаления планшета Wacom из зоны действия (QTabletEvent), отправлено в QApplication. |
QEvent::TabletTrackingChange |
219 |
Изменилось состояние отслеживания планшета Wacom (с Qt 5.9). |
QEvent::ThreadChange |
22 |
Объект перемещён в другую нить. Это последнее событие, отправленное этому объекту в предыдущей нити. См. QObject::moveToThread(). |
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 также можно установить с помощью 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).
Установка параметра принятия означает, что получатель события хочет обработать событие. Нежелательные события могут быть переданы родительскому виджету.
См. также ignore().
[virtual] QEvent *QEvent::clone() const
Создаёт и возвращает идентичную копию этого события.
void QEvent::ignore()
Сбрасывает флаг принятия параметра объекта события, что эквивалентно вызову setAccepted(false).
Сброс параметра принятия означает, что получатель события не хочет обрабатывать событие. Нежелательные события могут быть переданы родительскому виджету.
См. также 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.0/qevent.html