Обработка событий колесика мыши в Qt4.8

В Qt5 это можно сделать в QML следующим образом.

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

Как добиться того же в 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);
}

Я оборачиваю свой виджет вокруг всего моего интерфейса и соединяю два сигнала.

WheelEventCarrier carrier;
UI.setParent(&carrier);

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

carrier.show();

Надеюсь, вы можете указать мне на лучшее решение.

Другие вопросы по тегам