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
相关推荐
追光天使5 小时前
元组、列表、字符串、字典定义及切割
开发语言·python
爱吃巧克力的程序媛5 小时前
qmake 语法
qt
guygg885 小时前
一维信号模糊熵(Fuzzy Entropy)计算原理与MATLAB实现
开发语言·matlab
今夕资源网5 小时前
go-tcnat内网端口映射 端口穿透 GO语言 免费开源
开发语言·后端·golang·go语言·端口映射·内网端口映射
m0_635647485 小时前
pyqt5打包报错:qt.qpa.plugin: Could not load the Qt platform plugin “windows“
开发语言·windows·python·qt·pyqt
Tony Bai5 小时前
告别“If-Else”地狱:OpenFeature 如何重塑 Go 应用的特性开关管理?
开发语言·后端·golang
kylezhao20195 小时前
C#连接plc之 Model、DAL、BLL、Common三层架构可扩展
开发语言·c#
代码方舟5 小时前
不仅是评分:利用 Python 解析天远借贷行为验证API 的 T0-T11 借贷时间轴数据
大数据·开发语言·python
夜泉_ly5 小时前
期末速通 -Java程序设计基础 -理论
java·开发语言
m0_611349315 小时前
什么是副作用(Side Effects)
开发语言·前端·javascript