Класс QWheelEvent
Класс QWheelEvent содержит параметры, описывающие событие прокрутки колеса. Подробнее...
| Заголовок: | #include <QWheelEvent> |
| qmake: | QT += gui |
| Наследует: | QInputEvent |
Открытые функции
| QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta, int qt4Delta, Qt::Orientation qt4Orientation, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers) | |
| QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta, int qt4Delta, Qt::Orientation qt4Orientation, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase) | |
| QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta, int qt4Delta, Qt::Orientation qt4Orientation, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase, Qt::MouseEventSource source) | |
| QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta, int qt4Delta, Qt::Orientation qt4Orientation, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase, Qt::MouseEventSource source, bool inverted) | |
| QPoint | angleDelta() const |
| Qt::MouseButtons | buttons() const |
| QPoint | globalPos() const |
| const QPointF & | globalPosF() const |
| int | globalX() const |
| int | globalY() const |
| bool | inverted() const |
| Qt::ScrollPhase | phase() const |
| QPoint | pixelDelta() const |
| QPoint | pos() const |
| const QPointF & | posF() const |
| Qt::MouseEventSource | source() const |
| int | x() const |
| int | y() const |
- 2 открытых функции унаследованы от QInputEvent
- 6 открытых функций унаследованы от QEvent
Дополнительные унаследованные члены
Подробное описание
Класс QWheelEvent содержит параметры, описывающие событие прокрутки колеса.
События прокрутки колеса отправляются виджету под курсором мыши, но если этот виджет не обрабатывает событие, они отправляются виджету, имеющему фокус. События прокрутки генерируются как для колес мыши, так и для жестов прокрутки трекпада. Есть два способа считывания дельты события прокрутки: angleDelta() возвращает дельту в градусах поворота колеса. Это значение всегда предоставляется. pixelDelta() возвращает дельту в пикселях экрана и доступна на платформах с высокоразрешающими трекпадами, такими как macOS. Если это так, source() вернёт Qt::MouseEventSynthesizedBySystem.
Функции pos() и globalPos() возвращают положение курсора мыши в момент события.
Событие прокрутки содержит специальный флаг подтверждения, который указывает, хочет ли получатель событие. Вы должны вызвать ignore(), если вы не обрабатываете событие прокрутки; это гарантирует, что оно будет отправлено родительскому виджету.
Функция QWidget::setEnabled() может использоваться для включения или отключения событий мыши и клавиатуры для виджета.
Обработчик событий QWidget::wheelEvent() получает события прокрутки колеса.
См. также QMouseEvent и QWidget::grabMouse().
Документация функций-членов
QWheelEvent::QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta, int qt4Delta, Qt::Orientation qt4Orientation, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers)
Конструирует объект события прокрутки колеса.
pos указывает положение курсора мыши внутри окна. Позиция в глобальных координатах задаётся параметром globalPos.
pixelDelta содержит расстояние прокрутки в пикселях на экране, а angleDelta содержит расстояние поворота колеса. pixelDelta необязателен и может быть нулевым.
Состояния мыши и клавиатуры в момент события задаются параметрами buttons и modifiers.
Для обратной совместимости событие может также содержать данные о событии мононаправленной прокрутки: qt4Delta указывает поворот, а qt4Orientation — направление.
Метод phase() инициализируется значением Qt::ScrollUpdate. Используйте другой конструктор для явного задания фазы.
См. также posF(), globalPosF(), angleDelta() и pixelDelta().
QWheelEvent::QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta, int qt4Delta, Qt::Orientation qt4Orientation, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase)
Конструирует объект события прокрутки колеса.
pos указывает положение курсора мыши внутри окна. Позиция в глобальных координатах задаётся параметром globalPos.
pixelDelta содержит расстояние прокрутки в пикселях на экране, а angleDelta содержит расстояние поворота колеса. pixelDelta необязателен и может быть нулевым.
Состояния мыши и клавиатуры в момент события задаются параметрами buttons и modifiers.
Для обратной совместимости событие может также содержать данные о событии мононаправленной прокрутки: qt4Delta указывает поворот, а qt4Orientation — направление.
Фаза прокрутки события задаётся параметром phase.
См. также posF(), globalPosF(), angleDelta(), pixelDelta() и phase().
QWheelEvent::QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta, int qt4Delta, Qt::Orientation qt4Orientation, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase, Qt::MouseEventSource source)
Конструирует объект события прокрутки колеса.
Поле pos указывает расположение курсора мыши в окне. Положение в глобальных координатах задаётся полем globalPos.
pixelDelta содержит расстояние прокрутки в пикселях на экране, а angleDelta — расстояние поворота колеса. pixelDelta необязательно и может быть null.
Состояние мыши и клавиатуры в момент события задаются полями buttons и modifiers.
Для обратной совместимости событие может также содержать данные о событии прокрутки в одном направлении: qt4Delta указывает поворот, а qt4Orientation — направление.
Фаза прокрутки события задаётся полем phase.
Если событие прокрутки происходит от физического колеса мыши, source устанавливается в значение Qt::MouseEventNotSynthesized. Если оно происходит от жеста, распознанного операционной системой, или от устройства ввода, не являющегося мышью, так что pixelDelta напрямую связано с движением пальца, source устанавливается в значение Qt::MouseEventSynthesizedBySystem. Если оно исходит от Qt, source устанавливается в значение Qt::MouseEventSynthesizedByQt.
См. также posF(), globalPosF(), angleDelta(), pixelDelta() и phase().
QWheelEvent::QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta, int qt4Delta, Qt::Orientation qt4Orientation, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase, Qt::MouseEventSource source, bool inverted)
Создаёт объект события прокрутки.
Поле pos указывает расположение курсора мыши в окне. Положение в глобальных координатах задаётся полем globalPos.
pixelDelta содержит расстояние прокрутки в пикселях на экране, а angleDelta — расстояние поворота колеса. pixelDelta необязательно и может быть null.
Состояние мыши и клавиатуры в момент события задаются полями buttons и modifiers.
Для обратной совместимости событие может также содержать данные о событии прокрутки в одном направлении: qt4Delta указывает поворот, а qt4Orientation — направление.
Фаза прокрутки события задаётся полем phase.
Если событие прокрутки происходит от физического колеса мыши, source устанавливается в значение Qt::MouseEventNotSynthesized. Если оно происходит от жеста, распознанного операционной системой, или от устройства ввода, не являющегося мышью, так что pixelDelta напрямую связано с движением пальца, source устанавливается в значение Qt::MouseEventSynthesizedBySystem. Если оно исходит от Qt, source устанавливается в значение Qt::MouseEventSynthesizedByQt.
Если система настроена на инвертирование значений дельты, передаваемых с событием (например, естественная прокрутка тачпада на OS X), inverted должно быть true. В противном случае inverted — false.
См. также posF(), globalPosF(), angleDelta(), pixelDelta() и phase().
QPoint QWheelEvent::angleDelta() const
Возвращает расстояние поворота колеса в восьмых долях градуса. Положительное значение указывает, что колесо было повернуто вперёд от пользователя; отрицательное значение указывает, что колесо было повернуто назад к пользователю.
Большинство типов мышей работают шагами по 15 градусов, в этом случае значение дельты является кратным 120; т.е., 120 единиц * 1/8 = 15 градусов.
Однако некоторые мыши имеют колёса с более высоким разрешением и отправляют значения дельты, которые меньше 120 единиц (меньше 15 градусов). Чтобы поддержать эту возможность, вы можете либо кумулятивно добавлять значения дельты из событий до достижения значения 120, а затем прокручивать виджет, либо частично прокручивать виджет в ответ на каждое событие прокрутки.
Пример:
void MyWidget::wheelEvent(QWheelEvent *event)
{
QPoint numPixels = event->pixelDelta();
QPoint numDegrees = event->angleDelta() / 8;
if (!numPixels.isNull()) {
scrollWithPixels(numPixels);
} else if (!numDegrees.isNull()) {
QPoint numSteps = numDegrees / 15;
scrollWithDegrees(numSteps);
}
event->accept();
} Примечание: На платформах, поддерживающих фазы прокрутки phase, дельта может быть нулевой, когда:
- прокрутка только начинается, но расстояние ещё не изменилось (Qt::ScrollBegin),
- или прокрутка закончилась, и расстояние больше не изменилось (Qt::ScrollEnd).
Qt::MouseButtons QWheelEvent::buttons() const
Возвращает состояние мыши в момент возникновения события.
QPoint QWheelEvent::globalPos() const
Возвращает глобальное положение указателя мыши в момент события. Это важно на асинхронных системах окон, таких как X11; всякий раз, когда вы перемещаете свои виджеты в ответ на события мыши, globalPos() может сильно отличаться от текущего положения курсора, возвращаемого QCursor::pos().
См. также globalX() и globalY().
const QPointF &QWheelEvent::globalPosF() const
Возвращает глобальное положение указателя мыши в момент события. Это важно на асинхронных системах окон, таких как X11; всякий раз, когда вы перемещаете свои виджеты в ответ на события мыши, globalPosF() может сильно отличаться от текущего положения курсора, возвращаемого QCursor::pos().
См. также posF().
int QWheelEvent::globalX() const
Возвращает глобальную x-позицию курсора мыши в момент события.
См. также globalY() и globalPos().
int QWheelEvent::globalY() const
Возвращает глобальную y-позицию курсора мыши в момент события.
См. также globalX() и globalPos().
bool QWheelEvent::inverted() const
Возвращает, инвертированы ли значения дельты, переданные с событием.
Обычно вертикальное колесо создаёт QWheelEvent с положительными значениями дельты, если верхняя часть колеса вращается от оператора. Аналогично, горизонтальное движение колеса создаёт QWheelEvent с положительными значениями дельты, если верхняя часть колеса перемещается влево.
Однако на некоторых платформах это настраивается, так что те же операции, описанные выше, создадут отрицательные значения дельты (но с той же величиной). С помощью свойства inverted потребитель события прокрутки может всегда следовать направлению колеса, независимо от настроек системы, но только для определённых виджетов. (Один из таких случаев использования мог бы заключаться в том, что пользователь вращает колесо в том же направлении, что и визуальный Tumbler. Другой случай использования — сделать ручку ползунка следовать направлению движения пальцев на тачпаде независимо от конфигурации системы).
Примечание: Многие платформы не предоставляют такую информацию. На таких платформах inverted всегда возвращает false.
Функция была введена в Qt 5.7.
Qt::ScrollPhase QWheelEvent::phase() const
Возвращает фазу прокрутки этого события прокрутки.
Примечание: Фазы Qt::ScrollBegin и Qt::ScrollEnd в настоящее время поддерживаются только на macOS.
Функция была введена в Qt 5.2.
QPoint QWheelEvent::pixelDelta() const
Возвращает расстояние прокрутки в пикселях на экране. Это значение предоставляется на платформах, поддерживающих высокоточные значения дельты на основе пикселей, такие как macOS. Значение должно использоваться непосредственно для прокрутки содержимого на экране.
Пример:
void MyWidget::wheelEvent(QWheelEvent *event)
{
QPoint numPixels = event->pixelDelta();
QPoint numDegrees = event->angleDelta() / 8;
if (!numPixels.isNull()) {
scrollWithPixels(numPixels);
} else if (!numDegrees.isNull()) {
QPoint numSteps = numDegrees / 15;
scrollWithDegrees(numSteps);
}
event->accept();
} Примечание: На платформах, поддерживающих фазы прокрутки phase, дельта может быть нулевой, когда:
- прокрутка только начинается, но расстояние ещё не изменилось (Qt::ScrollBegin),
- или прокрутка закончилась, и расстояние больше не изменилось (Qt::ScrollEnd).
Примечание: На X11 это значение зависит от драйвера и ненадежно, используйте angleDelta() вместо него.
QPoint QWheelEvent::pos() const
Возвращает положение курсора мыши относительно виджета, который получил событие.
Если вы перемещаете свои виджеты в ответ на события мыши, используйте globalPos() вместо этой функции.
См. также x(), y() и globalPos().
const QPointF &QWheelEvent::posF() const
Возвращает положение курсора мыши относительно виджета, который получил событие.
Если вы перемещаете свои виджеты в ответ на события мыши, используйте globalPosF() вместо этой функции.
См. также globalPosF().
Qt::MouseEventSource QWheelEvent::source() const
Возвращает информацию о источнике события прокрутки.
Источник может использоваться для различения событий, которые поступают от мыши с физическим колесом, и событий, которые генерируются другими способами, такими как жест пощёлкивания на тачпаде.
Примечание: Многие платформы не предоставляют такой информации. На таких платформах всегда возвращается Qt::MouseEventNotSynthesized.
См. также Qt::MouseEventSource.
int QWheelEvent::x() const
Возвращает положение курсора мыши по оси x, относительно виджета, получившего событие.
int QWheelEvent::y() const
Возвращает положение курсора мыши по оси y, относительно виджета, получившего событие.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qwheelevent.html