BestMPRBaseVtk-010-使用Qt 事件完成鼠标交互

头图

BestMPRBaseVtk 使用Qt 事件

​ 昨天开会,人事来个逆天操作,前段时间开始抓考勤,昨天竟然宣布钉钉打卡不让使用范围打卡了,使用公司wifi打卡,我勒个去了,人都说公司要完的前奏就是抓考勤,我是不是该早做准备了。

​ 还是开始今天正题,在上上篇BestMPRBaseVtk-008-改变原有交互方式中,我们使用vtk原有的回调类来实现了鼠标滚轮切换Slice的功能,但是我这个已经在Qt里面展开了,我是完全可以使用Qt的事件来处理的,所以就有今天的这个测试,使用Qt 的void wheelEvent(QWheelEvent* event) override;来实现鼠标滚轮切换功能,不过我据地vtk的回调类是省不掉的,我得在他的类中把鼠标滚轮事件忽略了才可以。


关键字: vtkSlice鼠标滚轮鼠标事件wheelEvent

Qt 的 wheelEvent

​ Qt有世界上最好的帮助文档了,关于wheelEvent可以自行查阅,目前代码里面还是只有实现了鼠标滚轮事件,应该还不是最终版本,博士给安排的任务中有好几个模式,后期会根据不同的模式来切换不同的功能。

​ 目前这里仅有切换Slice代码,如下:

/**
 * @brief wheelEvent
 * @param event
 * 鼠标滚轮事件
 */
void BPPMPRWidget::wheelEvent(QWheelEvent *event)
{

    this->minSLice = m_PipeLine->getSliceMin();                     //获取最小Slice
    this->maxSlice = m_PipeLine->getSliceMax();                     //获取最大Slice
    this->slice = this->m_PipeLine->getSlice();                     //获取当前Slice
   if(event->delta() > 0)                                           //向前
   {
       if (this->slice > this->minSLice)
       {
           this->slice -= 1;
           this->m_PipeLine->setSlice(this->slice);
           this->m_PipeLine->render();
       }
   }
   else                                                             //向后
   {
       if (this->slice < this->maxSlice)
       {
           this->slice += 1;
           this->m_PipeLine->setSlice(this->slice);
           this->m_PipeLine->render();
       }
   }
}

演示下过和之前查不到,这里简单录屏处理一下:暂时先注掉了3D的程序,那个没有单开线程,太耗费时间。

在这里插入图片描述

关闭原来回调函数

​ 之前我们在BestMPRBaseVtk-008-改变原有交互方式实现的回调函数目前还不能删除,这里我还没有解决,如下,我的window 使用的就是QVTKOpenGLNativeWidget,所以这里他是带有默认的交互方式的,如果不屏蔽掉,VTK会比Qt 还先就获取到鼠标事件,如下,我在代码中注释掉自己的交互样式。

image-20211221103428292

那么结果就变了,如下图所示,等于vtk使用了默认的交互方式,所以如果我想使用Qt 的事件,那就是还得弄一个回调类,来把所有事件都过滤掉。

在这里插入图片描述

比如目前,我把鼠标的滚轮事件获取了,但是我里面什么操作都没有。这样我就可以在Qt中实现了。

image-20211221103747014

☞ 源码

源码链接:GitHub仓库自取

使用方法:☟☟☟

源码


博客签名2021
  • 2
    点赞
  • 3
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:Age of Ai 设计师:meimeiellie 返回首页
评论

打赏作者

DreamLife.

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值