Spec-Zone.ru › Qt 6.1

Класс QScroller

Класс QScroller обеспечивает кинетическое прокручивание для любого виджета прокрутки или графического элемента. Подробнее...

Заголовок: #include <QScroller>
CMake: find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets)
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

Функции публичного доступа

QPointF finalPosition() const
bool handleInput(QScroller::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)
QScroller::State state() const
void stop()
QObject * target() const
QPointF velocity() const

Слот публичного доступа

void ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin, int scrollTime)
void ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin)
void resendPrepareEvent()
void scrollTo(const QPointF &pos, int scrollTime)
void scrollTo(const QPointF &pos)
void setScrollerProperties(const QScrollerProperties &prop)

Сигналы

void scrollerPropertiesChanged(const QScrollerProperties &newProperties)
void stateChanged(QScroller::State newState)

Статические публичные члены

QList<QScroller *> activeScrollers()
Qt::GestureType grabGesture(QObject *target, QScroller::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)

Подробное описание

С кинетической прокруткой пользователь может протолкнуть виджет в заданном направлении, и он будет продолжать прокручивать в этом направлении до тех пор, пока он не остановится либо пользователем, либо трением. Аспекты инерции, трения и других физических понятий могут быть изменены для тонкой настройки интуитивного пользовательского опыта.

Объект 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.

Пример Dir View Example демонстрирует один способ использования QScroller с QTreeView. Пример в каталоге scroller также демонстрирует QScroller.

Хотя у этого кинетического прокручивателя есть большое количество настроек, доступных через 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)

перечисление 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

Это свойство содержит состояние прокрутки.

Функции доступа:

QScroller::State state() const

Сигнал уведомления:

void stateChanged(QScroller::State newState)

См. также QScroller::State.

Документация по функциям-членам

void QScroller::ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin, int scrollTime)

Это перегруженная функция.

Этот вариант достигнет своего конечного положения за scrollTime миллисекунд.

void QScroller::ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin)

Начинает прокрутку, чтобы прямоугольник rect был виден внутри области просмотра с дополнительными отступами, заданными в пикселях xmargin и ymargin вокруг прямоугольника.

В тех случаях, когда прямоугольник плюс отступы не могут поместиться внутри области просмотра, содержимое прокручивается так, чтобы как можно больше было видно из rect.

Скорость прокрутки рассчитывается таким образом, чтобы заданная позиция была достигнута через определённый платформой промежуток времени.

Эта функция выполняет фактическую прокрутку, вызывая scrollTo().

См. также scrollTo().

void QScroller::resendPrepareEvent()

Эта функция повторно отправляет QScrollPrepareEvent. Вызов resendPrepareEvent вызывает QScrollPrepareEvent из прокрутки. Это позволяет получателю повторно установить позицию содержимого и размер содержимого во время прокрутки. Вызов этой функции в состоянии Inactive бесполезен, так как событие prepare отправляется снова перед началом прокрутки.

void QScroller::scrollTo(const QPointF &pos, int scrollTime)

Это перегруженная функция.

Этот вариант достигнет своего конечного положения за scrollTime миллисекунд.

void QScroller::scrollTo(const QPointF &pos)

Начинает прокрутку виджета так, чтобы точка pos находилась в верхнем левом углу области просмотра.

Поведение при прокрутке за пределами допустимой области прокрутки не определено. В этом случае прокрутка может либо перескочить, либо нет.

Скорость прокрутки будет рассчитана так, чтобы заданная позиция была достигнута через определённый платформой промежуток времени.

pos задаётся в координатах области просмотра.

См. также ensureVisible().

void QScroller::scrollerPropertiesChanged(const QScrollerProperties &newProperties)

QScroller излучает этот сигнал всякий раз, когда изменяются его свойства прокрутки. newProperties — новые свойства прокрутки.

Примечание: Сигнал уведомления для свойства scrollerProperties.

См. также scrollerProperties.

void QScroller::stateChanged(QScroller::State newState)

QScroller излучает этот сигнал всякий раз, когда состояние меняется. newState — новое состояние.

Примечание: Сигнал уведомления для свойства state.

См. также state.

QList<QScroller *> QScroller::activeScrollers()

Возвращает список всех активных объектов QScroller во всём приложении. Активные объекты QScroller находятся в состоянии state(), которое не является QScroller::Inactive. Эта функция полезна при написании собственного распознавателя жестов.

QPointF QScroller::finalPosition() const

Возвращает предполагаемое конечное положение для текущего движения прокрутки. Возвращает текущее положение, если состояние прокрутки не Scrolling. Результат не определён, если состояние прокрутки Inactive.

Целевая позиция в пикселях.

См. также pixelPerMeter() и scrollTo().

Qt::GestureType QScroller::grabGesture(QObject *target, QScroller::ScrollerGestureType scrollGestureType = TouchGesture)

Регистрирует пользовательский распознаватель жестов прокрутки, захватывает его для target и возвращает тип полученного жеста. Если scrollGestureType установлено в TouchGesture, то жесты срабатывают при касаниях. Если оно установлено в LeftMouseButtonGesture, RightMouseButtonGesture или MiddleMouseButtonGesture, то жесты срабатывают при нажатиях мыши соответствующей кнопки.

Только один жест прокрутки может быть активен на одном объекте одновременно. Если вы вызываете эту функцию дважды на одном объекте, то она отпустит существующий жест перед захватом нового.

Примечание: Чтобы избежать нежелательных побочных эффектов, события мыши потребляются во время срабатывания жеста. Так как начальное событие нажатия мыши не потребляется, жесты отправляют фальшивое событие отпускания мыши в глобальной позиции (INT_MIN, INT_MIN). Это гарантирует, что внутренние состояния виджета, получившего исходное нажатие мыши, будут согласованны.

См. также ungrabGesture() и grabbedGesture().

Qt::GestureType QScroller::grabbedGesture(QObject *target)

Возвращает тип жеста, в данный момент захваченного для target, или 0, если жесты не захвачены.

См. также grabGesture() и ungrabGesture().

bool QScroller::handleInput(QScroller::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.

[static] QScroller *QScroller::scroller(QObject *target)

Возвращает прокрутку для данного target. Пока объект существует, этот метод всегда возвращает тот же экземпляр QScroller. Если для target не существует QScroller, будет неявно создан. В любой момент времени на объекте активен не более одного объекта QScroller.

См. также hasScroller() и target().

[static] const QScroller *QScroller::scroller(const QObject *target)

Это перегруженный метод.

Это версия метода scroller() с const.

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

void QScroller::stop()

Останавливает прокрутку и сбрасывает ее состояние в Неактивное.

QObject *QScroller::target() const

Возвращает целевой объект этой прокрутки.

См. также hasScroller() и scroller().

[static] void QScroller::ungrabGesture(QObject *target)

Отменяет захват жеста для target. Ничего не делает, если жесты не захвачены.

См. также grabGesture() и grabbedGesture().

QPointF QScroller::velocity() const

Возвращает текущую скорость прокрутки в метрах в секунду, когда состояние равно Прокрутка или Перетаскивание. Возвращает нулевую скорость в противном случае.

Скорость возвращается для осей x и y отдельно с помощью QPointF.

См. также pixelPerMeter().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qscroller.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API