在Qt4.8中处理鼠标滚轮事件

时间:2016-08-31 13:05:29

标签: c++ qt qml qt-quick qt4.8

在Qt5中,可以像这样在QML中完成。

MouseArea {
    onWheel: {
        if (wheel.modifiers & Qt.ControlModifier) {
            adjustZoom(wheel.angleDelta.y / 120);
        }
    }
}

如何在Qt4.8中实现相同的目标?

1 个答案:

答案 0 :(得分:1)

看起来我正在重新发明自行车,但现在它的工作原理。

我有一个新的QWidget捕获wheelEvent并发送一个新信号。

void WheelEventCarrier::wheelEvent(QWheelEvent *event)
{
    emit sendWheelEvent(event->delta()/120);
}

我在QML中定义一个新信号并同时处理它。

signal wheelEvent(int delta)

onWheelEvent:
{
    if(delta > 0)
        tag_meas_mod.zoomIn(true);
    else
        tag_meas_mod.zoomOut(true);
}

我将我的小部件包裹在我的所有UI中并连接这两个信号。

WheelEventCarrier carrier;
UI.setParent(&carrier);

QObject::connect(&carrier,
                     SIGNAL(sendWheelEvent(int)),
                     viewer.rootObject(),
                     SIGNAL(wheelEvent(int)));

carrier.show();

希望你能指出我一个更好的解决方案。