如何一按就平移QML映射并开始在其上拖动鼠标指针?

问题描述 投票:0回答:1

我启用了这样的手势:

gesture.enabled: true

但是我按下鼠标并开始移动鼠标指针后,地图并不会立即开始平移,而是当我已经将鼠标指针拖动到10像素左右时,地图才开始平移!

[只要有人开始拖动鼠标,而不是等待10像素左右的拖动等待,有人可以帮我让我开始平移地图吗?

qt qml gesture
1个回答
0
投票
如果分析了the MapGestureArea source code,那么会发现所使用的阈值取决于QStyleHints::startDragDistance

QStyleHints::startDragDistance

因此解决方案是修改该属性(bool QQuickGeoMapGestureArea::canStartPan()
{
    if (m_allPoints.count() == 0 || (m_acceptedGestures & PanGesture) == 0
            || (m_mousePoint && m_mousePoint->state() == Qt::TouchPointReleased)) // mouseReleaseEvent handling does not clear m_mousePoint, only ungrabMouse does -- QTBUG-66534
        return false;

    // Check if thresholds for normal panning are met.
    // (normal panning vs flicking: flicking will start from mouse release event).
    const int startDragDistance = qApp->styleHints()->startDragDistance() * 2;
    QPointF p1 = mapFromScene(m_allPoints.at(0).scenePos());
    int dyFromPress = int(p1.y() - m_sceneStartPoint1.y());
    int dxFromPress = int(p1.x() - m_sceneStartPoint1.x());
    if ((qAbs(dyFromPress) >= startDragDistance || qAbs(dxFromPress) >= startDragDistance))
        return true;
    return false;
}的setter方法未记录可能是错误的内容:]

startDragDistance

© www.soinside.com 2019 - 2024. All rights reserved.