99 Q_Q(QQuickPageIndicator);
100 QQuickControlPrivate::handleRelease(point, timestamp);
102 if (pressedItem && contentItem)
103 q->setCurrentIndex(contentItem->childItems().indexOf(pressedItem));
104 updatePressed(
false);
119 Q_Q(
const QQuickPageIndicator);
120 if (!contentItem || !q->contains(pos))
123 QPointF contentPos = q->mapToItem(contentItem, pos);
124 QQuickItem *item = contentItem->childAt(contentPos.x(), contentPos.y());
125 while (item && item->parentItem() != contentItem)
126 item = item->parentItem();
127 if (item && !QQuickItemPrivate::get(item)->isTransparentForPositioner())
131 qreal distance = qInf();
132 QQuickItem *nearest =
nullptr;
133 const auto childItems = contentItem->childItems();
134 for (QQuickItem *child : childItems) {
135 if (QQuickItemPrivate::get(child)->isTransparentForPositioner())
138 QPointF center = child->boundingRect().center();
139 QPointF pt = contentItem->mapToItem(child, contentPos);
141 qreal len = QLineF(center, pt).length();
142 if (len < distance) {
152 QQuickItem *prevItem = pressedItem;
153 pressedItem = pressed ? itemAt(pos) :
nullptr;
154 if (prevItem != pressedItem) {
155 setContextProperty(prevItem, QStringLiteral(
"pressed"),
false);
156 setContextProperty(pressedItem, QStringLiteral(
"pressed"), pressed);
253void QQuickPageIndicator::setInteractive(
bool interactive)
255 Q_D(QQuickPageIndicator);
256 if (d->interactive == interactive)
259 d->interactive = interactive;
261 setAcceptedMouseButtons(Qt::LeftButton);
262#if QT_CONFIG(quicktemplates2_multitouch)
263 setAcceptTouchEvents(
true);
266 setCursor(Qt::ArrowCursor);
269 setAcceptedMouseButtons(Qt::NoButton);
270#if QT_CONFIG(quicktemplates2_multitouch)
271 setAcceptTouchEvents(
true);
277 emit interactiveChanged();
309void QQuickPageIndicator::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem)
311 Q_D(QQuickPageIndicator);
312 QQuickControl::contentItemChange(newItem, oldItem);
314 QQuickItemPrivate::get(oldItem)->removeItemChangeListener(d, QQuickItemPrivate::Children);
316 QQuickItemPrivate::get(newItem)->addItemChangeListener(d, QQuickItemPrivate::Children);
Indicates the currently active page.
void updatePressed(bool pressed, const QPointF &pos=QPointF())
bool handleRelease(const QPointF &point, ulong timestamp) override
bool handleMove(const QPointF &point, ulong timestamp) override
void setContextProperty(QQuickItem *item, const QString &name, const QVariant &value)
QQuickItem * itemAt(const QPointF &pos) const
void itemChildAdded(QQuickItem *, QQuickItem *child) override
void handleUngrab() override