鼠标事件:QMouseEvent

#include<QMouseEvent>

鼠标无论是点击,移动,双击,松开都由鼠标的左右键区别而有区别,所以,严谨的来使用就是如mousePressEvent一样来通过按下的键来区别对待,从而达成不同的需求;

void MainView::mousePressEvent(QMouseEvent *e)

{

    if( e->button()==Qt::RightButton)//鼠标右击
    {
         qDebug()<<"右"<<e->pos();
    }
    if(e->button()==Qt::LeftButton)//鼠标左击
    {
         qDebug()<<"左"<<e->pos();
    }
    if(e->button()==Qt::MidButton)//滚轮按下
    {
         qDebug()<<"中"<<e-> pos();
    }
}

void MainView::mouseMoveEvent(QMouseEvent *e)
{
//无论按下的是哪个键,只要有按键按下并移动就会触发mouseMoveEvent
         qDebug()<<"移动";
}

void MainView::mouseReleaseEvent(QMouseEvent *e)
{
    //松开鼠标时触发,无论按下的是哪个按键
  qDebug()<<"离开";
}

void MainView::mouseDoubleClickEvent(QMouseEvent *e)
{
    //双击鼠标时触发,无论按下的是哪个按键
  qDebug()<<"双击";
}

void MainView::wheelEvent(QWheelEvent *e)
{
    // 当滚轮远离使用者时
    if(e->delta() > 0){
     qDebug()<<"1";
    }else{//当滚轮向使用者方向旋转时
        qDebug()<<"-1";
    }
}

扩展: QMouseEvent *e;

e->pos(),获取鼠标位置

e->button(),获取按下的是哪个键

e->delta()==120/-120 

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一般来说,可以通过继承QWidget或QGraphicsItem等类,并重写其鼠标事件函数来实现委托于鼠标事件。 以QWidget为例,可以在其子类中重写以下函数: ``` void mousePressEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseDoubleClickEvent(QMouseEvent *event); ``` 这些函数分别对应鼠标按下、释放、移动和双击事件。在函数中,可以根据具体需求进行处理,如判断鼠标位置、修改控件状态等。 示例代码: ``` class MyWidget : public QWidget { Q_OBJECT public: MyWidget(QWidget *parent = nullptr); ~MyWidget(); protected: void mousePressEvent(QMouseEvent *event) override; void mouseReleaseEvent(QMouseEvent *event) override; void mouseMoveEvent(QMouseEvent *event) override; void mouseDoubleClickEvent(QMouseEvent *event) override; private: // 其他成员变量和函数 }; void MyWidget::mousePressEvent(QMouseEvent *event) { // 处理鼠标按下事件 } void MyWidget::mouseReleaseEvent(QMouseEvent *event) { // 处理鼠标释放事件 } void MyWidget::mouseMoveEvent(QMouseEvent *event) { // 处理鼠标移动事件 } void MyWidget::mouseDoubleClickEvent(QMouseEvent *event) { // 处理鼠标双击事件 } ``` 需要注意的是,在使用委托模式时,应该在原始对象中调用相应的鼠标事件函数,以便将事件传递给委托对象。例如,在QWidget子类中重写mousePressEvent函数时,应该在函数中调用父类的mousePressEvent函数: ``` void MyWidget::mousePressEvent(QMouseEvent *event) { QWidget::mousePressEvent(event); // 调用父类函数,将事件传递给委托对象 // 处理其他事件 } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值