QT: :QWheelEvent

QWheelEvent 类参考
QWheelEvent类包含用于描述鼠标滑轮事件的相关参数。
#include<QWheelEvent>
继承至:QInputEvent

公有函数:

QWheelEvent ( const QPoint & pos, int delta, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, 
              Qt::Orientation orient = Qt::Vertical )
              
QWheelEvent ( const QPoint & pos, const QPoint & globalPos, int delta, Qt::MouseButtons buttons,
              Qt::KeyboardModifiers modifiers, Qt::Orientation orient = Qt::Vertical )
              
Qt::MouseButtons buttons () const
int delta () const
const QPoint & globalPos () const
int globalX () const
int globalY () const
Qt::Orientation orientation () const
const QPoint & pos () const
int x () const
int y () const
1个从父类QInputEvent继承过来的公有函数:Qt::KeyboardModifiers modifiers () const

6个从QEvent继承过来的公有函数:

 QEvent ( Type type )
              virtual ~QEvent ()
              void accept ()
              void ignore ()
              bool isAccepted () const
              void setAccepted ( bool accepted )
              bool spontaneous () const
              Type type () const
详细描述:

    QWheelEvent类用于描述鼠标转轮(middle_mouse_button)事件.当鼠标指针定位于一个窗口界面之上时,
    滑动鼠标转轮会产生一系列事件(QWheelEvent),这些事件会被传送给鼠标指针所在的父窗口,如果此窗口不处理此事件(Event)
    该鼠标事件默认情况下会传送给具有输入焦点的窗口。 计算滑轮滚动轴滑动的距离可以用函数delta()计算,函数pos()和globalpos()
    可以返回再一次鼠标事件中鼠标指针的当前位置。
    
    一个鼠标滑轮事件包含一些指定的接受标志用于指出该事件是否会被接收和处理,如果不处理该事件可以调用ignore(),
    这样可以保证该事件会被传送给鼠标指针所在的父窗口。
    
    函数QWidget::setEnabled()可以用于禁止/允许一个窗口接收鼠标和键盘事件。
    事件处理函数QWidget::wheelEvent()被用于接收鼠标滑轮事件。

    

成员函数描述:

QWheelEvent::QWheelEvent ( const QPoint & pos, int delta, Qt::MouseButtons buttons, 
                           Qt::KeyboardModifiers modifiers, Qt::Orientation orient = Qt::Vertical )
创建一个wheelEvent对象,参数pos代表鼠标指针在窗口中的当前位置,通常用globalPos()初始化QCursor::pos(),但并不总是正确的。
如果需要显示指定一个全局位置,可以用其他的构造函数。


参数button用于描述在鼠标事件过程中鼠标按键的状态(state),delta()可以返回滑动的距离,参数modifiers用于描述在鼠标事件中
鼠标状态位改变时的参数值 (比如鼠标的左中右按键的切换),参数orient用于指示鼠标滑轮滚动的方向(比如向上或者向下)。


QWheelEvent::QWheelEvent ( const QPoint & pos, const QPoint & globalPos, int delta, Qt::MouseButtons buttons, 
                           Qt::KeyboardModifiers modifiers, Qt::Orientation orient = Qt::Vertical )
创建一个wheelEvent对象,参数pos用于指出鼠标指针在当前窗口中的当前位置,要返回鼠标指针在全局坐标系统中的位置可以调用globalPos(),
函数delta()用于返回鼠标滑轮滑动的距离,参数modifiers用于描述在鼠标事件中鼠标状态位改变时的参数值 (比如鼠标的左中右按键的切换),
参数orient用于指示鼠标滑轮滚动的方向(比如向上或者向下)。

Qt::MouseButtons QWheelEvent::buttons () const
当事件发生时,返回鼠标状态。

int QWheelEvent::delta () const
当鼠标滑轮在滚动时用于返回滑动的距离,该值等于鼠标旋转角度的8倍。正数值表示滑轮相对于用户在向前滑动,
相反,负数值表示滑轮相对于用户是向后滑动的。

大多数鼠标工作在单步15度的情况下(意思是鼠标转轮滑动一圈是360度,细化成单步就是1度,那么鼠标转轮滑动一度对应于窗口界面单位尺度的8倍),在这种情况下,delta的返回值是120的倍数。计算公式:120 units/8=15度。

但是,有些鼠标有更好的解决方案,而且对顶单步值小于15度即delta()的返回值比120要小,为了支持这种可能性,在鼠标事件中既可以累积该返回值,
直到该返回值累加到120为止,然后滚动窗口;或者可以小幅度的滚动窗口作为对每一次鼠标滚动事件的响应,从而计算该返回值。例如:
 void MyWidget::wheelEvent(QWheelEvent *event)
 {
     int numDegrees = event->delta() / 8;
     int numSteps = numDegrees / 15;


     if (event->orientation() == Qt::Horizontal) {       
         scrollHorizontally(numSteps);       //水平滚动
     } else {
         scrollVertically(numSteps);       //垂直滚动
     }
     event->accept();      //接收该事件
 }

const QPoint & QWheelEvent::globalPos () const
返回鼠标指针的全局位置,这个特性对于异步窗口系统很重要譬如X11,然后当你滑动窗口作为鼠标响应事件时,
可以用globalPos()函数与QCursor::pos()函数进行区分当前鼠标指针所在的位置。

int QWheelEvent::globalX () const
返回鼠标指针全局坐标中X轴所对应的坐标值。

int QWheelEvent::globalY () const
返回鼠标指针全局坐标中Y轴所对应的坐标值。

Qt::Orientation QWheelEvent::orientation () const
返回鼠标转轮滚动的方向,当为整数值时表示向前,负数值时表示向后。方向参考系可选用户本身。

const QPoint & QWheelEvent::pos () const
返回鼠标指针相对于窗口的坐标值QPoint(x,y),如果滚动窗口可以用globalPos()替换本函数从而返回全局坐标值。

int QWheelEvent::x () const
返回鼠标指针相对于窗口的相对位置值的X坐标值。

int QWheelEvent::y () const
返回鼠标指针相对于窗口的相对位置值的Y坐标值。


 


                         

### 回答1: Qt中的QWheelEvent是用于处理鼠标滚轮事件的类。它包含了滚动方向、滚动距离等信息。 QWheelEvent的使用步骤如下: 1.在需要处理鼠标滚轮事件的部件中重写wheelEvent函数。 2.在wheelEvent函数中判断事件类型是否为QWheelEvent。 3.调用QWheelEvent的成员函数delta()获取滚动距离,正值表示向前滚动,负值表示向后滚动。 4.根据滚动距离进行相应的操作。 以下是一个简单的例子: ```cpp void MyWidget::wheelEvent(QWheelEvent *event) { if (event->type() == QEvent::Wheel) { // 判断事件类型是否为QWheelEvent int delta = event->delta(); // 获取滚动距离 if (delta > 0) { // 向前滚动 // 进行相应的操作 } else { // 向后滚动 // 进行相应的操作 } event->accept(); // 接受事件 } } ``` 需要注意的是,如果不调用event->accept()接受事件,那么滚轮事件将会被忽略。 ### 回答2: qt中的qwheelevent是一个用于处理鼠标滚轮事件的函数。当用户滚动鼠标滚轮时,系统会生成一个QWheelEvent对象并将其传递给相应的QWidget或QGraphicsView的event函数。我们可以在QWidget或QGraphicsView的子类中重新实现该函数以自定义滚轮事件的处理方式。 QWheelEvent类提供了一些方法来获取和设置与滚轮事件相关的信息。可以使用方法angleDelta()获取滚动的角度,正数表示向前滚动,负数表示向后滚动。也可以使用方法pixelDelta()获取滚动的像素偏移量,其中水平滚动偏移量通过x()方法获取,垂直滚动偏移量通过y()方法获取。此外,还可以使用方法modifiers()获取滚轮事件发生时的修饰键状态,如Shift、Ctrl和Alt等。 在重新实现qwheelevent时,我们可以根据需要进行特定的处理。例如,可以根据滚动方向调整窗口的缩放级别或滚动视图内容,也可以根据滚轮的角度或像素偏移量进行其他自定义操作。通常,我们会在重新实现的qwheelevent函数中进行判断,以便根据滚动事件的类型进行不同的处理。要注意的是,为了确保事件被正确处理,有时候还需要调用父类的qwheelevent函数。 总而言之,qwheelevent是用于处理鼠标滚轮事件的函数,可以通过重新实现该函数来自定义滚轮事件的处理方式。可以使用QWheelEvent类的方法来获取和设置与滚轮事件相关的信息,从而根据需要进行相应的处理。 ### 回答3: 在Qt中,QWheelEvent是鼠标滚轮事件类,用于响应鼠标滚轮的旋转操作。通过重写QWidget或QGraphicsView的wheelEvent()函数来处理该事件。 QWheelEvent类提供了一些有用的方法和属性,以便于处理滚轮事件。以下是一些常用的用法示例: 1. 获取滚轮旋转方向: 通过delta()方法可以获取滚轮的旋转方向,正值表示向前滚动,负值表示向后滚动。 2. 获取滚轮旋转的步数: 通过angleDelta()方法可以获取滚轮的旋转角度,单位为1/8度。可以根据该值来确定滚轮的旋转步数。 3. 设置滚轮事件的接受与否: 通过设置ignore()方法可以控制滚轮事件是否被忽略。将其设为false表示该事件将不会被忽略,而是会传递给其他控件进行处理。 4. 改变滚轮事件的默认行为: 可以通过重写wheelEvent()函数来改变滚轮事件的默认行为。比如按下Ctrl键时,滚轮事件可以具有不同的效果,如缩放窗口或改变画面大小等。 5. 控制滚轮事件的响应范围: 可以通过重写wheelEvent()函数中的条件语句,来控制滚轮事件的响应范围。比如只有在特定的区域内滚动时才执行某些操作。 总之,QtQWheelEvent类提供了丰富的方法和属性,可以灵活地处理鼠标滚轮事件。通过重写相关函数或修改默认行为,可以实现各种滚轮操作,如缩放、滚动等,以达到更好的用户交互体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值