使用EventFilter进行事件过滤
来源:互联网 发布:vc map数据如何拷贝 编辑:程序博客网 时间:2024/06/06 18:13
1.效果图
2.源码
eventfilter.h
#ifndef EVENTFILTER_H#define EVENTFILTER_H#include <QDialog>#include <QLabel>#include <QImage>#include <QEvent>class EventFilter : public QDialog{ Q_OBJECTpublic: EventFilter(QWidget *parent = 0,Qt::WindowFlags f=0); ~EventFilter();public slots: bool eventFilter(QObject *, QEvent *);//事件过滤private: QLabel *label1; QLabel *label2; QLabel *label3; QLabel *stateLabel; QImage Image1; QImage Image2; QImage Image3;};#endif // EVENTFILTER_H
eventfilter.cpp
#include "eventfilter.h"#include <QHBoxLayout>#include <QVBoxLayout>#include <QMouseEvent>#include <QMatrix>EventFilter::EventFilter(QWidget *parent,Qt::WindowFlags f) : QDialog(parent,f){ setWindowTitle(tr("事件过滤")); label1 = new QLabel; Image1.load("../image/1.png"); label1->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter); label1->setPixmap(QPixmap::fromImage(Image1)); label2 = new QLabel; Image2.load("../image/2.png"); label2->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter); label2->setPixmap(QPixmap::fromImage(Image2)); label3 = new QLabel; Image3.load("../image/3.png"); label3->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter); label3->setPixmap(QPixmap::fromImage(Image3)); //界面布局 stateLabel = new QLabel(tr("鼠标按下标志")); stateLabel->setAlignment(Qt::AlignHCenter); QHBoxLayout *layout=new QHBoxLayout; layout->addWidget(label1); layout->addWidget(label2); layout->addWidget(label3); QVBoxLayout *mainLayout = new QVBoxLayout(this); mainLayout->addLayout(layout); mainLayout->addWidget(stateLabel); //安装事件过滤 label1->installEventFilter(this); label2->installEventFilter(this); label3->installEventFilter(this);}EventFilter::~EventFilter(){}bool EventFilter::eventFilter(QObject *watched, QEvent *event){ if(watched==label1) { if(event->type()==QEvent::MouseButtonPress) { QMouseEvent *mouseEvent=(QMouseEvent *)event; if(mouseEvent->buttons()&Qt::LeftButton) { stateLabel->setText(tr("左键按下左边图片")); } else if(mouseEvent->buttons()&Qt::MidButton) { stateLabel->setText(tr("中键按下左边图片")); } else if(mouseEvent->buttons()&Qt::RightButton) { stateLabel->setText(tr("右键按下左边图片")); } QMatrix matrix; matrix.scale(1.8,1.8); QImage tmpImg=Image1.transformed(matrix); label1->setPixmap(QPixmap::fromImage(tmpImg)); } if(event->type()==QEvent::MouseButtonRelease) { stateLabel->setText(tr("鼠标释放左边图片")); label1->setPixmap(QPixmap::fromImage(Image1)); } } else if(watched==label2) { if(event->type()==QEvent::MouseButtonPress) { QMouseEvent *mouseEvent=(QMouseEvent *)event; if(mouseEvent->buttons()&Qt::LeftButton) { stateLabel->setText(tr("左键按下中间图片")); } else if(mouseEvent->buttons()&Qt::MidButton) { stateLabel->setText(tr("中键按下中间图片")); } else if(mouseEvent->buttons()&Qt::RightButton) { stateLabel->setText(tr("右键按下中间图片")); } QMatrix matrix; matrix.scale(1.8,1.8); QImage tmpImg=Image2.transformed(matrix); label2->setPixmap(QPixmap::fromImage(tmpImg)); } if(event->type()==QEvent::MouseButtonRelease) { stateLabel->setText(tr("鼠标释放中间图片")); label2->setPixmap(QPixmap::fromImage(Image2)); } } else if(watched==label3) { if(event->type()==QEvent::MouseButtonPress) { QMouseEvent *mouseEvent=(QMouseEvent *)event; if(mouseEvent->buttons()&Qt::LeftButton) { stateLabel->setText(tr("左键按下右边图片")); } else if(mouseEvent->buttons()&Qt::MidButton) { stateLabel->setText(tr("中键按下右边图片")); } else if(mouseEvent->buttons()&Qt::RightButton) { stateLabel->setText(tr("右键按下右边图片")); } QMatrix matrix; matrix.scale(1.8,1.8); QImage tmpImg=Image3.transformed(matrix); label3->setPixmap(QPixmap::fromImage(tmpImg)); } if(event->type()==QEvent::MouseButtonRelease) { stateLabel->setText(tr("鼠标释放右边图片")); label3->setPixmap(QPixmap::fromImage(Image3)); } } return QDialog::eventFilter(watched,event);}
阅读全文
0 0
- 使用EventFilter进行事件过滤
- Qt eventFilter无法过滤mouse事件
- Qt中EventFilter过滤鼠标事件
- 事件过滤器的使用(eventFilter)
- [转]事件过滤器 eventFilter
- 一起看代码来玩玩QT之06EventFilter (事件过滤)
- 利用EventFilter正规化事件流
- 使用awk进行logcat过滤
- 使用java 8 进行过滤
- Qt Focus事件处理及eventFilter的用法
- Qt Focus事件处理及eventFilter的用法
- 使用Filter进行 过滤非法登录用户
- 1.2 使用iptables进行包过滤
- 使用动态代理进行GZIP数据压缩过滤
- 使用包装模式进行GZIP数据压缩过滤
- 使用jsonConfig对 object进行过滤
- Java使用IKAnalyzer进行敏感词过滤
- QPushButton的鼠标事件处理及EventFilter事件过滤器的用法
- 加快建设开放型经济新体制,自觉运用法律武器依法维权
- 数据库操作
- 按词典顺序输出数字
- 【白兔兔】- 试卷 LaTeX模板
- Linux Mint 18.2双显卡之安装NVIDIA官方闭源驱动
- 使用EventFilter进行事件过滤
- 人工智能冲击下的十大高危行业,你中了吗?
- iOS编程学习十
- Python---非负整数转化成二进制字符串
- 读Zepto源码之Event模块
- 设计模式(15)-解释器模式
- AJAX基础
- Educational Codeforces Round 25 A Binary Protocol 基础题
- log4j配置