Класс 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) | |
| виртуальный | ~QEvent() |
| void | accept() |
| void | ignore() |
| bool | isAccepted() const |
| void | setAccepted(bool accepted) |
| bool | spontaneous() const |
| QEvent::Type | type() const |
Статические члены публичного доступа
| int | registerEventType(int hint = -1) |
Подробное описание
Класс QEvent является базовым классом для всех классов событий. Объекты событий содержат параметры события.
Основной цикл обработки событий 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::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/archives/qt-5.11/qevent.html