Обработка событий колесика мыши в 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();
Надеюсь, вы можете указать мне на лучшее решение.