Qt4.8中处理鼠标滚轮事件
Processing mouse wheel events in Qt4.8
在 Qt5 中,可以像这样在 QML 中完成。
MouseArea {
onWheel: {
if (wheel.modifiers & Qt.ControlModifier) {
adjustZoom(wheel.angleDelta.y / 120);
}
}
}
如何在Qt4.8中实现同样的功能?
看起来我正在重新发明自行车,但目前它是这样工作的。
我有一个新的 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();
希望您能指出我更好的解决方案。
在 Qt5 中,可以像这样在 QML 中完成。
MouseArea {
onWheel: {
if (wheel.modifiers & Qt.ControlModifier) {
adjustZoom(wheel.angleDelta.y / 120);
}
}
}
如何在Qt4.8中实现同样的功能?
看起来我正在重新发明自行车,但目前它是这样工作的。
我有一个新的 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();
希望您能指出我更好的解决方案。