QT控件事件过滤

Posted 小哈龙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT控件事件过滤相关的知识,希望对你有一定的参考价值。

一.前言

在使用QT开发界面项目时,经常会遇到针对某一些控件,需要做一些鼠标操作(鼠标点击在控件上,下拉框禁止鼠标滚轮等类似的一系列操作),常规手法,针对此种操作不好实现,但是这种操作尤为常用,如何处理?

二.使用事件过滤实现对某个控件特定事件的响应

1.声明需要监听过滤的的控件

控件指针->installEventFilter(this);    //this为当前控件父控件

2.在控件所在UI类中重写eventFilter函数

.h中声明

//事件过滤
bool xxx::eventFilter(QObject *obj, QEvent *event)

.cpp中定义

bool xxx::eventFilter(QObject *obj, QEvent *event)

    //禁用下拉列表对鼠标滚轮的响应(其它操作类似)
    if(obj== ui.控件指针 && event->type() == QEvent::Wheel)
    
        //do somethings
         return true;//返回true才会取消滚轮事件的系统响应,返回false无效
    

以上是关于QT控件事件过滤的主要内容,如果未能解决你的问题,请参考以下文章

QT 中QComboBox控件鼠标事件过滤

Qt事件

Qt之在控件上绘图

QT 实现在QLabel上画图

QT在子窗口外单击关闭子窗口

Qt开源作品17-IP地址输入控件