Класс 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 |
Типы public
| перечисление | Тип { None, ActionAdded, ActionChanged, ActionRemoved, ActivationChange, …, MaxUser } |
Свойства
- accepted : bool
Public Функции
| QEvent(QEvent::Type type) | |
| virtual | ~QEvent() |
| void | accept() |
| void | ignore() |
| bool | isAccepted() const |
| void | setAccepted(bool accepted) |
| bool | spontaneous() const |
| QEvent::Type | type() const |
Статические public члены
| 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». Флаг accept устанавливается с помощью accept() и сбрасывается с помощью ignore(). Он устанавливается по умолчанию, но не полагайтесь на это, так как подклассы могут сбросить его в конструкторе.
Подклассы QEvent содержат дополнительные параметры, описывающие конкретное событие.
См. также QObject::event(), QObject::installEventFilter(), QCoreApplication::sendEvent(), QCoreApplication::postEvent() и QCoreApplication::processEvents().
Документация по типам членов
перечисление QEvent::Тип
Это перечисление определяет допустимые типы событий в 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.15/qevent.html