QML PathView:通过鼠标滚轮更改路径视图的当前索引

时间:2014-03-09 09:36:30

标签: qt qml

我创建了一个带有委托和模型的路径视图。是否可以通过鼠标滚轮而不是鼠标单击拖动来更改PathView的当前索引?

以下是我的PathView代码:

PathView {
    id: pathView;
    anchors.fill: parent;
    model: sampleModel;
    delegate: delegate;
    path: Path {
        startX: 45; startY: 100
        PathAttribute { name: "iconScale"; value: 0.3 }
        PathAttribute { name: "iconOpacity"; value: 0.1 }
        PathQuad { x: 45; y: 300; controlX: 45; controlY: 200 }
        PathAttribute { name: "iconScale"; value: 1 }
        PathAttribute { name: "iconOpacity"; value: 1 }
        PathQuad { x: 45; y: 500; controlX: 45; controlY: 400 }
    }
}

2 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。这是我的解决方案: 每次发生车轮事件时,我都会输入/减少车轮指数"并将view.currentIndex设置为此值。 要在车轮使用后重置wheelIndex,我使用计时器:

PathView {
id: view
anchors.fill: parent
focus: true
model: monthModel
property int wheelIndex:- 1;
currentIndex: 0;

MouseArea {
anchors.fill: parent
preventStealing: true;
propagateComposedEvents: true

 Timer {
     id:wheelTimer
     interval: 200;
     running: false;
     repeat: false
     onTriggered: {
        view.wheelIndex = -1;
     }
 }

onWheel: {
    wheelTimer.start();

    if (view.wheelIndex === -1) {
        view.wheelIndex = view.currentIndex;
    }

    if (wheel.angleDelta.y > 0) {
        view.wheelIndex++
        if (view.wheelIndex > view.model.count) {
            view.wheelIndex = 0;
        }

        view.currentIndex = view.wheelIndex;
    } else {
        view.wheelIndex--;
        if (view.wheelIndex < 0) {
            view.wheelIndex = view.model.count - 1;
        }

        view.currentIndex = view.wheelIndex;
    }
}
}

}

答案 1 :(得分:1)

MouseArea 作为添加到您的 PathView anchors.fill:parent 并实施< strong> onWheel()事件如下:

 PathView{
         id:view
         ...... 

    MouseArea{

       id:mouse
       anchors.fill: parent
       onWheel: 
            {
           if( wheel.angleDelta.y > 0 ) view.incrementCurrentIndex();
           else view.decrementCurrentIndex();
            }
    }

您将同时使用鼠标拖动鼠标滚动(滚轮)。有关详细信息,请查看QtQuick 5.0: WheelEvent