Класс QScroller
Класс QScroller обеспечивает кинетическое прокручивание для любого виджета прокрутки или графического элемента. Подробнее...
| Заголовок: | #include <QScroller> |
| qmake: | QT += widgets |
| С тех пор: | Qt 5.0 |
| Наследует: | QObject |
Открытые типы
| перечисление | Input { InputPress, InputMove, InputRelease } |
| перечисление | ScrollerGestureType { TouchGesture, LeftMouseButtonGesture, MiddleMouseButtonGesture, RightMouseButtonGesture } |
| перечисление | State { Inactive, Pressed, Dragging, Scrolling } |
Свойства
- scrollerProperties : QScrollerProperties
- state : const State
- 1 свойство унаследовано от QObject
Открытые функции
| QPointF | finalPosition() const |
| bool | handleInput(Input input, const QPointF &position, qint64 timestamp = 0) |
| QPointF | pixelPerMeter() const |
| QScrollerProperties | scrollerProperties() const |
| void | setSnapPositionsX(const QList<qreal> &positions) |
| void | setSnapPositionsX(qreal first, qreal interval) |
| void | setSnapPositionsY(const QList<qreal> &positions) |
| void | setSnapPositionsY(qreal first, qreal interval) |
| State | state() const |
| void | stop() |
| QObject * | target() const |
| QPointF | velocity() const |
- 32 открытых функции унаследованы от QObject
Открытые слоты
| void | ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin) |
| void | ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin, int scrollTime) |
| void | resendPrepareEvent() |
| void | scrollTo(const QPointF &pos) |
| void | scrollTo(const QPointF &pos, int scrollTime) |
| void | setScrollerProperties(const QScrollerProperties &prop) |
- 1 открытый слот унаследован от QObject
Сигналы
| void | scrollerPropertiesChanged(const QScrollerProperties &newProperties) |
| void | stateChanged(QScroller::State newState) |
- 2 сигнала унаследованы от QObject
Статические открытые члены
| QList<QScroller *> | activeScrollers() |
| Qt::GestureType | grabGesture(QObject *target, ScrollerGestureType scrollGestureType = TouchGesture) |
| Qt::GestureType | grabbedGesture(QObject *target) |
| bool | hasScroller(QObject *target) |
| QScroller * | scroller(QObject *target) |
| const QScroller * | scroller(const QObject *target) |
| void | ungrabGesture(QObject *target) |
- 11 статических открытых членов унаследованы от QObject
Дополнительные унаследованные члены
- 9 защищенных функций унаследованы от QObject
Подробное описание
Класс QScroller обеспечивает кинетическое прокручивание для любого виджета прокрутки или графического элемента.
При кинетической прокрутке пользователь может протолкнуть виджет в заданном направлении, и он будет продолжать прокручиваться в этом направлении до тех пор, пока его не остановит пользователь или трение. Аспекты инерции, трения и других физических понятий могут быть изменены для уточнения интуитивного пользовательского опыта.
Объект QScroller — это объект, который хранит текущее положение и скорость прокрутки и отвечает за обновления. QScroller может быть активизирован жестом быстрого прокручивания
QWidget *w = ...; QScroller::grabGesture(w, QScroller::LeftMouseButtonGesture);
или напрямую, как это:
QWidget *w = ...; QScroller *scroller = QScroller::scroller(w); scroller->scrollTo(QPointF(100, 100));
Прокручиваемые QObjects получают QScrollPrepareEvent, когда прокручиватель нуждается в обновлении своей геометрической информации, и QScrollEvent, когда содержимое объекта фактически должно быть прокручено.
Прокручиватель использует глобальный таймер QAbstractAnimation, чтобы генерировать свои QScrollEvents. Это можно изменить с помощью QScrollerProperties::FrameRate для каждого QScroller.
Несколько примеров в каталоге scroller показывают, как можно использовать QScroller, QScrollEvent и жесты прокрутки.
Хотя этот кинетический прокручиватель имеет большое количество настроек, доступных через QScrollerProperties, мы рекомендуем оставить все значения по умолчанию, оптимизированные для платформы. Перед изменением их можно поэкспериментировать с примером plot в каталоге scroller примеров.
См. также QScrollEvent, QScrollPrepareEvent и QScrollerProperties.
Документация по типу члена
перечисление QScroller::Input
Это перечисление содержит независимый от устройства ввода взгляд на события ввода, которые имеют значение для QScroller.
| Постоянная | Значение | Описание |
|---|---|---|
QScroller::InputPress |
1 |
Пользователь нажал на устройство ввода (например, QEvent::MouseButtonPress, QEvent::GraphicsSceneMousePress, QEvent::TouchBegin) |
QScroller::InputMove |
2 |
Пользователь передвинул устройство ввода (например, QEvent::MouseMove, QEvent::GraphicsSceneMouseMove, QEvent::TouchUpdate) |
QScroller::InputRelease |
3 |
Пользователь отпустил устройство ввода (например, QEvent::MouseButtonRelease, QEvent::GraphicsSceneMouseRelease, QEvent::TouchEnd) |
enum QScroller::ScrollerGestureType
Этот перечисление содержит различные типы жестов, поддерживаемые распознавателем жестов QScroller.
| Постоянная | Значение | Описание |
|---|---|---|
QScroller::TouchGesture |
0 |
Распознаватель жестов будет срабатывать только на событиях касания. Конкретно, он будет реагировать на одну точку касания при использовании сенсорного экрана и на две точки касания при использовании тачпада. |
QScroller::LeftMouseButtonGesture |
1 |
Распознаватель жестов будет срабатывать только на событиях нажатия левой кнопки мыши. |
QScroller::MiddleMouseButtonGesture |
3 |
Распознаватель жестов будет срабатывать только на событиях нажатия средней кнопки мыши. |
QScroller::RightMouseButtonGesture |
2 |
Распознаватель жестов будет срабатывать только на событиях нажатия правой кнопки мыши. |
enum QScroller::State
Это перечисление содержит различные состояния QScroller.
| Постоянная | Значение | Описание |
|---|---|---|
QScroller::Inactive |
0 |
Прокрутка не активна, ничего не нажато. |
QScroller::Pressed |
1 |
Поступило событие касания или нажатия кнопки мыши, но область прокрутки в данный момент не перемещается. |
QScroller::Dragging |
2 |
Область прокрутки в данный момент следует за точкой касания или курсором мыши. |
QScroller::Scrolling |
3 |
Область прокрутки перемещается самостоятельно. |
Документация по свойствам
scrollerProperties : QScrollerProperties
Это свойство содержит свойства прокрутки данной прокрутки. Свойства используются QScroller для определения поведения прокрутки.
Функции доступа:
| QScrollerProperties | scrollerProperties() const |
| void | setScrollerProperties(const QScrollerProperties &prop) |
Сигнал уведомления:
| void | scrollerPropertiesChanged(const QScrollerProperties &newProperties) |
state : const State
Это свойство содержит состояние прокрутки.
Функции доступа:
| State | state() const |
Сигнал уведомления:
| void | stateChanged(QScroller::State newState) |
См. также QScroller::State.
Документация по членам-функциям
[static] QList<QScroller *> QScroller::activeScrollers()
Возвращает список всех активных объектов QScroller во всем приложении. Активные объекты QScroller находятся в состоянии state(), которое не равно QScroller::Inactive. Эта функция полезна при написании собственного распознавателя жестов.
[slot] void QScroller::ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin)
Начинает прокрутку так, чтобы прямоугольник rect был виден внутри области просмотра с дополнительными отступами, заданными в пикселях xmargin и ymargin вокруг прямоугольника.
В случае, если прямоугольник с отступами не помещается в область просмотра, содержимое прокручивается так, чтобы как можно большая часть прямоугольника rect была видна.
Скорость прокрутки рассчитывается таким образом, чтобы заданная позиция была достигнута за определенное платформой время.
Эта функция выполняет фактическую прокрутку, вызывая scrollTo().
См. также scrollTo().
[slot] void QScroller::ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin, int scrollTime)
Это перегруженная функция.
Эта версия достигнет целевой позиции за scrollTime миллисекунд.
QPointF QScroller::finalPosition() const
Возвращает оцененную конечную позицию для текущего движения прокрутки. Возвращает текущую позицию, если состояние прокрутки не равно Scrolling. Результат не определён, когда состояние прокрутки равно Inactive.
Целевая позиция в пикселях.
См. также pixelPerMeter() и scrollTo().
[static] Qt::GestureType QScroller::grabGesture(QObject *target, ScrollerGestureType scrollGestureType = TouchGesture)
Регистрирует пользовательский распознаватель жестов прокрутки, захватывает его для target и возвращает тип полученного жеста. Если scrollGestureType установлено в TouchGesture, то жест срабатывает на событиях касания. Если оно установлено в LeftMouseButtonGesture, RightMouseButtonGesture или MiddleMouseButtonGesture, то жест срабатывает на событиях нажатия соответствующей кнопки мыши.
Только один жест прокрутки может быть активен на одном объекте в одно и то же время. Если вы вызываете эту функцию дважды для одного и того же объекта, существующий жест будет отпущен перед захватом нового.
Примечание: Для предотвращения нежелательных побочных эффектов, события мыши потребляются во время срабатывания жеста. Поскольку событие первоначального нажатия мыши не потребляется, жест отправляет поддельное событие отпускания мыши в глобальной позиции (INT_MIN, INT_MIN). Это гарантирует, что внутренние состояния виджета, получившего исходное нажатие мыши, будут согласованными.
См. также ungrabGesture() и grabbedGesture().
[static] Qt::GestureType QScroller::grabbedGesture(QObject *target)
Возвращает тип жеста, который в настоящее время захвачен для target, или 0, если ни один жест не захвачен.
См. также grabGesture() и ungrabGesture().
bool QScroller::handleInput(Input input, const QPointF &position, qint64 timestamp = 0)
Эта функция используется распознавателями жестов для информирования прокрутки о новом событии ввода. Прокрутка изменяет своё внутреннее состояние state() в соответствии с событием ввода и её свойствами прокрутки. Прокрутка не различает тип устройства ввода, от которого пришло событие. Поэтому событие необходимо разделить на тип input, позицию position и временную метку timestamp в миллисекундах. Позиция position должна быть в системе координат целевого объекта.
Значение возврата — true, если событие должно быть обработано вызывающим фильтром, или false, если событие должно быть передано контролю.
Примечание: Использование grabGesture() должно быть достаточным для большинства случаев.
[static] bool QScroller::hasScroller(QObject *target)
Возвращает true, если для target уже был создан объект QScroller; false в противном случае.
См. также scroller().
QPointF QScroller::pixelPerMeter() const
Возвращает метрику пикселей на метр для прокручиваемого виджета.
Значение сообщается как для оси x, так и для оси y отдельно с помощью QPointF.
Примечание: Обратите внимание, что это значение должно быть физически корректным. Фактические настройки DPI, возвращаемые Qt для дисплея, могут быть неправильно отображены операционной системой, например, на macOS.
[slot] void QScroller::resendPrepareEvent()
Эта функция повторно отправляет событие QScrollPrepareEvent. Вызов resendPrepareEvent вызывает событие QScrollPrepareEvent из прокручивателя. Это позволяет получателю повторно установить позицию и размер содержимого во время прокрутки. Вызов этой функции в состоянии Inactive бесполезен, поскольку событие prepare отправляется повторно перед началом прокрутки.
[slot] void QScroller::scrollTo(const QPointF &pos)
Начинает прокрутку виджета таким образом, что точка pos находится в верхнем левом углу области просмотра.
Поведение при прокрутке за пределами допустимой области прокрутки не определено. В этом случае прокручиватель может или не может перескочить заданную точку.
Скорость прокрутки будет рассчитана таким образом, чтобы заданная позиция была достигнута за время, определённое платформой.
pos задаётся в координатах области просмотра.
См. также ensureVisible().
[slot] void QScroller::scrollTo(const QPointF &pos, int scrollTime)
Это перегруженная функция.
Этот вариант достигнет своей конечной позиции за scrollTime миллисекунд.
[static] QScroller *QScroller::scroller(QObject *target)
Возвращает прокручиватель для данного target. Пока объект существует, эта функция всегда возвращает тот же экземпляр QScroller. Если для target нет QScroller, он будет неявно создан. Ни при каких обстоятельствах на одном объекте не будет активнее одного QScroller.
См. также hasScroller() и target().
[static] const QScroller *QScroller::scroller(const QObject *target)
Это перегруженная функция.
Это версия scroller() с модификатором const.
[signal] void QScroller::scrollerPropertiesChanged(const QScrollerProperties &newProperties)
Объект QScroller излучает этот сигнал всякий раз, когда меняются его свойства прокрутки. newProperties — новые свойства прокрутки.
Примечание: Сигнал уведомления для свойства scrollerProperties.
См. также scrollerProperties.
void QScroller::setSnapPositionsX(const QList<qreal> &positions)
Устанавливает позиции привязки для горизонтальной оси в список positions. Это перезаписывает все ранее установленные позиции привязки, а также ранее установленный интервал привязки. Привязку можно отключить, установив пустой список позиций.
void QScroller::setSnapPositionsX(qreal first, qreal interval)
Устанавливает позиции привязки для горизонтальной оси с равномерно распределёнными интервалами. Первая позиция привязки находится в first. Следующая — в first + interval. Это можно использовать для реализации заголовков списков. Это перезаписывает все ранее установленные позиции привязки, а также ранее установленный интервал привязки. Привязку можно отключить, установив интервал 0.0.
void QScroller::setSnapPositionsY(const QList<qreal> &positions)
Устанавливает позиции привязки для вертикальной оси в список positions. Это перезаписывает все ранее установленные позиции привязки, а также ранее установленный интервал привязки. Привязку можно отключить, установив пустой список позиций.
void QScroller::setSnapPositionsY(qreal first, qreal interval)
Устанавливает позиции привязки для вертикальной оси с равномерно распределёнными интервалами. Первая позиция привязки находится в first. Следующая — в first + interval. Это перезаписывает все ранее установленные позиции привязки, а также ранее установленный интервал привязки. Привязку можно отключить, установив интервал 0.0.
[signal] void QScroller::stateChanged(QScroller::State newState)
Объект QScroller излучает этот сигнал всякий раз, когда состояние меняется. newState — новое состояние.
Примечание: Сигнал уведомления для свойства state.
См. также state.
void QScroller::stop()
Останавливает прокручиватель и сбрасывает его состояние обратно в Inactive.
QObject *QScroller::target() const
Возвращает целевой объект этого прокручивателя.
См. также hasScroller() и scroller().
[static] void QScroller::ungrabGesture(QObject *target)
Освобождает захват жеста для target. Не делает ничего, если ни один жест не захвачен.
См. также grabGesture() и grabbedGesture().
QPointF QScroller::velocity() const
Возвращает текущую скорость прокрутки в метрах в секунду, когда состояние равно Scrolling или Dragging. В противном случае возвращает нулевую скорость.
Скорость сообщается как для оси x, так и для оси y отдельно с помощью QPointF.
См. также pixelPerMeter().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qscroller.html