Класс QEvent
Класс QEvent — базовый класс всех классов событий. Объекты событий содержат параметры события. Подробнее...
| Заголовок: | #include <QEvent> |
| qmake: | QT += core |
| Наследуется от: | QChildEvent, QDynamicPropertyChangeEvent, QStateMachine::SignalEvent, QStateMachine::WrappedEvent и QTimerEvent |
Типы публичного доступа
| перечисление | Type { None, ActionAdded, ActionChanged, ActionRemoved, ..., MaxUser } |
Свойства
- accepted : bool
Публичные функции
| QEvent(QEvent::Type type) | |
| virtual | ~QEvent() |
| void | accept() |
| void | ignore() |
| bool | isAccepted() 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::Type
Это перечисление определяет допустимые типы событий в 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::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().
Функции доступа:
| bool | isAccepted() const |
| void | setAccepted(bool accepted) |
Документация функций-членов
QEvent::QEvent(QEvent::Type type)
Создает объект события типа type.
[virtual] QEvent::~QEvent()
Уничтожает событие. Если оно было опубликовано, оно будет удалено из списка событий, которые должны быть опубликованы.
void QEvent::accept()
Устанавливает флаг принятия события объекта события, что эквивалентно вызову setAccepted(true).
Установка параметра accept указывает, что получатель события хочет обработать это событие. Нежелательные события могут быть переданы родительскому виджету.
См. также ignore().
void QEvent::ignore()
Очищает параметр флага принятия события объекта события, что эквивалентно вызову setAccepted(false).
Очистка параметра accept указывает, что получатель события не хочет обрабатывать это событие. Нежелательные события могут быть переданы родительскому виджету.
См. также accept().
[static] int QEvent::registerEventType(int hint = -1)
Регистрирует и возвращает тип пользовательского события. Переданное значение hint будет использовано, если оно доступно, в противном случае будет возвращено значение между QEvent::User и QEvent::MaxUser, которое ещё не зарегистрировано. Значение hint игнорируется, если оно не находится в диапазоне от QEvent::User до QEvent::MaxUser.
Возвращает -1, если все доступные значения уже заняты или программа завершается.
Примечание: Эта функция безопасна для многопоточного доступа.
Эта функция была добавлена в Qt 4.4.
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-5.13/qevent.html