【问题标题】:Processing mouse wheel events in Qt4.8Qt4.8中处理鼠标滚轮事件
【发布时间】:2016-08-31 13:05:28
【问题描述】:

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

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

如何在Qt4.8中实现同样的功能?

【问题讨论】:

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


    【解决方案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();
    

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

    【讨论】:

    • 或者我可以创建一个新的 QDeclarative 项目并使用 'wheelEvent(QGraphicsSceneWheelEvent *event)' 捕获事件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    相关资源
    最近更新 更多