Класс 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
- 7 открытых функций, унаследованные от QEvent
Дополнительные унаследованные члены
- 1 свойство, унаследованное от QEvent
- 1 открытая переменная, унаследованная от QEvent
- 1 статическая открытая функция, унаследованная от QEvent
- 2 защищенных переменных, унаследованных от 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)
Конструирует объект события прокрутки колеса.
...
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)
Конструирует объект события прокрутки колеса.
...
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 потребитель событий прокрутки может всегда следовать направлению колеса, независимо от настроек системы, но только для конкретных виджетов. (Один из таких случаев использования заключается в том, что пользователь поворачивает колесо в том же направлении, что и визуальный регулятор. Другой случай использования - сделать ручку ползунка, следующей за направлением движения пальцев на трекпаде, независимо от настроек системы.)
Примечание: Многие платформы не предоставляют такой информации. На таких платформах 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/archives/qt-5.11/qwheelevent.html