Класс QEvent
Класс QEvent является базовым классом для всех классов событий. Объекты событий содержат параметры событий. Подробнее...
| Заголовок: | #include <QEvent> |
| qmake: | QT += core |
| Наследуется от: | QActionEvent, QChildEvent, QCloseEvent, QDragLeaveEvent, QDropEvent, QDynamicPropertyChangeEvent, QEnterEvent, 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, ..., MaxUser } |
Свойства
- accepted : bool
Открытые функции
| QEvent(Type type) | |
| virtual | ~QEvent() |
| void | accept() |
| void | ignore() |
| bool | isAccepted() const |
| void | setAccepted(bool accepted) |
| bool | spontaneous() const |
| 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 |
Виджет должен принять событие, если у него есть справка «Что это?». |
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). |
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().
Функции доступа:
| bool | isAccepted() const |
| void | setAccepted(bool accepted) |
Документация членов-функций
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.
Значение, возвращаемое этой функцией, не определено для событий рисования.
Type QEvent::type() const
Возвращает тип события.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qevent.html