Qt : 禁用控件默认的鼠标滚轮事件

最近在写一个模拟器,在item中添加了很多的控件,这些控件默认是支持鼠标滚动事件的。在数据量特别大的时候,及容易不小心就把数据给修改了而不自知。所有,我们这里需要禁用掉这些控件的鼠标滚轮事件。

实现的思想很简单,集成Qt提供的控件,并重写wheelEvent.为了偷懒,笔者进行了如下的设计:

cpp 复制代码
#ifndef NOWHEELUICONTROLS_H
#define NOWHEELUICONTROLS_H

#include <QWheelEvent>
#include <QComboBox>
#include <QDoubleSpinBox>
#include <QSpinBox>
#include <QListWidget>

#define DEFINE_NOWHEEL_CONTROLS(parent)  \
class NoWheel##parent : public parent { \
public:\
    using parent::parent; /* Use the constructor of the parent class */ \
protected:\
    void wheelEvent(QWheelEvent* event) override { event->ignore(); } \
};

DEFINE_NOWHEEL_CONTROLS(QComboBox)
DEFINE_NOWHEEL_CONTROLS(QDoubleSpinBox)
DEFINE_NOWHEEL_CONTROLS(QSpinBox)
DEFINE_NOWHEEL_CONTROLS(QListWidget)
// add new here

#endif // NOWHEELUICONTROLS_H
相关推荐
至为芯1 小时前
IP6537至为芯支持双C口快充输出的45W降压SOC芯片
c语言·开发语言
小羊羊Python2 小时前
SoundMaze v1.0.1正式发布!
开发语言·c++
浩瀚地学2 小时前
【Java】JDK8的一些新特性
java·开发语言·经验分享·笔记·学习
l1t2 小时前
利用DeepSeek将python DLX求解数独程序格式化并改成3.x版本
开发语言·python·算法·数独
yugi9878383 小时前
基于遗传算法优化主动悬架模糊控制的Matlab实现
开发语言·matlab
moxiaoran57534 小时前
Go语言的错误处理
开发语言·后端·golang
yugi9878384 小时前
MATLAB的多层感知器(MLP)与极限学习机(ELM)实现
开发语言·matlab
Never_Satisfied5 小时前
C#获取汉字拼音字母方法总结
开发语言·c#
zh_xuan5 小时前
kotlin 密封类
开发语言·kotlin
码小猿的CPP工坊5 小时前
C++软件开发之内存泄漏闭坑方法
开发语言·c++