在日常开发中,特别是在一些对图形进行缩放等鼠标操作时,难免会用到组合键+鼠标来实现一些特殊功能,例如需要用到shift+鼠标、ctrl+鼠标、alt+鼠标……来完成如多选、缩放等操作。
而最近针对用QCustomPlot来Atl+滚轮来做定制化图形缩放功能时,发现按下Alt按键后,无法进行滚轮缩放了,好奇心驱使下去翻看源码,发现并不是无响应,而是问题出现在这里了
发现当按下Alt按键时,Qt获取到的滚轮坐标的y值都是0,导致后面计算得到factor都是1,因此缩放不起作用。
然后进一步测试测试,发现当按下Alt时Qt获取到的滚轮坐标的x、y值是倒置的(使用的Qt版本是5.15.2)
在新的版本中获取鼠标滚轮坐标的方式变了,旧的接口已经被丢弃了,而新版的Qt中,当Atl按键被按下时,获取到的滚轮坐标的X值和Y值发生了导致,因此在按常规的方法进行处理时,会出现滚动滚轮无响应的现象。
因此在实际的应用中,当我们需要使用Alt+鼠标滚轮来实现某些定制化功能时,在进行计算时需要把获取到的鼠标滚轮的X和Y值进行互换,即
// 当Alt按下时
double delta_x = event->angleDelta().y();
double delta_y = event->angleDelta().x();
如此便可获取想要的值来实现想要的功能了。
若本文对您有帮助请点个赞,若有写的不对的地方麻烦指出,海涵海涵!^-^