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
相关推荐
小羊没烦恼!6 小时前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
伞伞悦读7 小时前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
C语言小火车7 小时前
C/C++ 为什么需要编译器?
开发语言·c++
霍霍的袁8 小时前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超9 小时前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int9 小时前
深入理解C++系列(20)——C++11(下)
开发语言·c++
慧都小项9 小时前
当边缘AI上产线:QtitanDocking 如何让工业 HMI 实现多视图协同
人工智能·qt·ui·边缘计算·qt6.3
梅梅9669 小时前
一款mipi转lvds的lcd调试(LT8912B)
单片机·计算机外设·电脑·显示器·pd芯片
CoderYanger10 小时前
A.每日一题:835. 图像重叠
java·开发语言·程序人生·leetcode·面试·职场和发展·学习方法
伞伞悦读11 小时前
【第37期】Python JSON 与配置详解:序列化、反序列化、嵌套结构和配置文件
开发语言·python·json