Класс 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». Флаг accept устанавливается с помощью 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 |
Произошло двойное нажатие мыши вне области клиента. |
QEvent::NonClientAreaMouseButtonPress |
174 |
Произошло нажатие кнопки мыши вне области клиента. |
QEvent::NonClientAreaMouseButtonRelease |
175 |
Произошло отпускание кнопки мыши вне области клиента. |
QEvent::NonClientAreaMouseMove |
173 |
Произошло перемещение мыши вне области клиента. |
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::OkRequest |
94 |
Нажата кнопка «ОК» в декоре. Поддерживается только для Windows CE. |
QEvent::TabletEnterProximity |
171 |
Событие приближения планшета Wacom (QTabletEvent), отправляется в QApplication. |
QEvent::TabletLeaveProximity |
172 |
Событие удаления планшета Wacom из близости (QTabletEvent), отправляется в QApplication. |
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 указывает, что получатель события не хочет этого события. Нежелательные события могут быть проpropagated к родительскому виджету.
См. также 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/archives/qt-5.6/qevent.html