There are two ways to read the wheel event delta: angleDelta() returns the delta in wheel degrees. This value is always provided. pixelDelta() returns the delta in screen pixels and is available on platforms that have high-resolution trackpads, such as macOS. If that is the case, source() will return Qt::MouseEventSynthesizedBySystem.
在Qt5中有两种读取鼠标滚轮事件滚动增量的方法:
-
angleDelta()返回滚轮度数的增量, 始终提供此值
-
pixelDelta()返回屏幕像素的增量,可以在具有高分辨率触摸板的平台上使用,比如macOS 如果是这样,source()将返回Qt::MouseEventSynthesizedBySystem,但在普通设备中source()将返回Qt::MouseEventNotSynthesized,并且pixelDelta()返回的是QPoint(0,0)
-
delta(),新版的Qt已经将其废除,它的返回值相当于angleDelta()的返回值的y点坐标
利用QWheelEvent的delta()函数获得滚轮滚动的距离值,通过此值判断滚轮滚动的方向。若delta大于0,则表示滚轮向前(远离用户的方向),小于零则表明向后,(靠近用户的方向)。
鼠标的滚动事件,滚轮每滚动1度,相当于移动了8度,而常见的滚轮鼠标拨动一下的滚动角度为15度,因此滚轮拨动一下相当于移动了120度。
void MainWindow::wheelEvent(QWheelEvent *event){
QPoint numPixels = event->pixelDelta();
QPoint numDegrees = event->angleDelta();
int delta = event->delta ();
qDebug() << "numPixels:"<<numPixels;
qDebug() << "numDegrees:"<<numDegrees;
qDebug() << "delta:"<<delta;
qDebug() << "the wheel event source: "<<event->source ();
if(numDegrees.y()>0){
qDebug() << "向前滚动"<<numDegrees.y();
}else{
qDebug() << "向后滚动"<<numDegrees.y();
当上下滚动滑轮时,有如下显示:
numPixels: QPoint(0,0)
numDegrees: QPoint(0,120)
delta: 120
the wheel event source: Qt::MouseEventNotSynthesized
向前滚动 120
numPixels: QPoint(0,0)
numDegrees: QPoint(0,-120)
delta: -120
the wheel event source: Qt::MouseEventNotSynthesized
向后滚动 -120
综上所述,要判断鼠标滚轮滚动方向,可以使用QWheelEvent的delta()和angleDelta()函数,但是delta()函数在新版Qt中已被废除,所以最好使用angleDelta().y()的值来判断。
There are two ways to read the wheel event delta: angleDelta() returns the delta in wheel degrees. This value is always provided. pixelDelta() returns the delta in screen pixels and is available on platforms that have high-resolution trackpads, such as mac
鼠标滚轮实现图像放大缩小的主要思想:通过wheelEvent来获得鼠标滚轮的angleDelta,即滚轮转角。然后通过数据类型转换,将读取的值转换成整型数值叠加到图像的尺寸长和宽上,从而实现图像的放大和缩小。
注意:滚轮向上滑转角为正,所以图像放大。滚轮向下滑转角为负,所以图像缩小。
下边直接上代码,头文件中只需要加上使用鼠标滚轮的声明函数就行:
void wheelEvent(QWheelEve...
在Qt中,鼠标事件被封装成.QMouseEvent对象,QMouseEvent中包含一些参数,用描述鼠标事件。
在QT中,鼠标事件包含:鼠标按键按下,鼠标按键释放,鼠标双击事件,鼠标移动事件。
分别由下面的event handler来处理:
virtual void mousePressEvent(QMouseEvent *event);
virtual void mouseReleaseE...
鼠标事件及滚轮事件
QMouseEvent类用于表示一个鼠标事件,当按下鼠标或者移动鼠标时就会产生鼠标事件,利用QMouseEvent类可以获取鼠标时哪个键给按下了
QWheelEvent类用于表示鼠标滚轮事件,在这个类中主要是获取滚轮移动的方向和距离
我们就用一个实际例子来重写下鼠标和滚轮事件
1.把鼠标的型状改为小手
2.双击使窗口全屏和缩小
3.鼠标移动来拖动窗口
4.对文本框中的内容通过滚轮进行内容的放大和缩小
5.点击右键把
使用QT5的鼠标事件和滚轮事件
----完成鼠标左键拖动窗口,双击全屏,滚轮放大缩小窗口大小
这里使用的是QMouseEvent类里面的鼠标事件,通常进行重定义部件的鼠标事件处理函数来实现自定义的内容操作。同样,鼠标滚轮操作是利用QWheelEvent实现滚轮事件。
voidmousePressEvent(QMouseEvent *event);这个是鼠标按下的时