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

本文介绍了一种简单有效的方法来解决Qt界面中QComboBox控件与ScrollArea控件组合使用时的问题:当鼠标滚轮滚动到QComboBox上时,触发下拉事件而非ScrollArea的滚动事件。通过重写QComboBox的滚轮事件,可以避免这一问题。
1万+

被折叠的 条评论
为什么被折叠?



