如何忽略水平QWheelEvent?(对于鼠标垫)

时间:2016-07-18 11:58:52

标签: c++ qt zoom

我使用QWheelEvent在GraphicsScene上放大/缩小,但问题是当我水平使用鼠标垫时放大/缩小也有效。我想忽略这种情况。我想垂直放大/缩小鼠标垫。

我的代码是:

`void WheeledGraphicsView::wheelEvent(QWheelEvent *event){
        setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
        double scaleFactor = 1.15;
        if(event->delta() > 0) {
            scale(scaleFactor, scaleFactor);
        }
        else {
            scale(1.0 / scaleFactor, 1.0 / scaleFactor);
        }
       // QWheelEvent.orientation();
}
`

也许我可以使用QWheelEvent :: orientation()但我无法使用它。 谢谢!

我解决了这个问题:

WheeledGraphicsView::WheeledGraphicsView(QWidget *parent) : QGraphicsView(parent){

}

void WheeledGraphicsView::wheelEvent(QWheelEvent *event){
    if(event->orientation() == Qt::Horizontal) {
        event->ignore();
    }
    else {
        if(event->delta() > 0) {
            scale(ZOOM_RATIO_PER_WHEEL_TICK, ZOOM_RATIO_PER_WHEEL_TICK);
        }
        else {
            scale(1.0 / ZOOM_RATIO_PER_WHEEL_TICK, 1.0 / ZOOM_RATIO_PER_WHEEL_TICK);
        }
    }
}

0 个答案:

没有答案