Класс 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 |
Типы public
| Перечисление | Type { None, ActionAdded, ActionChanged, ActionRemoved, ActivationChange, …, MaxUser } |
Свойства
- accepted : bool
Public Функции
| 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 |
Статические public члены
| int | registerEventType(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() позволяет объекту перехватывать события, предназначенные для другого объекта.
Базовый QEvent содержит только параметр типа события и флаг "accept". Флаг accept устанавливается с помощью 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::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(), а сбросить с помощью ignore().
Примечание: Принятие QPointerEvent подразумевает принятие всех точек, которые несет событие.
Функции доступа:
| bool | isAccepted() const |
| virtual void | setAccepted(bool accepted) |
Документация функций-членов
QEvent::QEvent(QEvent::Type type)
Создает объект события типа type.
[virtual] QEvent::~QEvent()
Уничтожает событие. Если оно было опубликовано, оно будет удалено из списка событий, которые нужно опубликовать.
void QEvent::accept()
Устанавливает флаг 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.2/qevent.html