做Qt界面经常会用到QComboBox控件去实现数据选择的功能,而且会将该控件置到ScrollArea的控件中,但是但滑动区域很长时,使用滚轮进行滚动是最方便的,但是光标滚到ComboBox控件时,会触发ComboBox的下拉事件。
在网上找了好久,都没有很好的解决方案,有几种方案试了都没有用。
1. 第一种想法是去重写QComboBox控件,或是设置,但是对于这种小功能去重写控件很不好控制。
2. 设置QComboBox的MouseTracking属性,或是设置FoucsPolicy为NoFocus都不可行。
最后,找到一种牛B的解决方案。
只需要把下面一行代码,放到界面代码的最上面即可。
void QComboBox::wheelEvent(QWheelEvent* e) {}
原理是重写QComboBox的滚轮事件,将其置空,滚轮就不执行下拉菜单,解决!!