当前位置: 首页 > news >正文

秦淮做网站价格google下载官网

秦淮做网站价格,google下载官网,电子商务有什么职业,网站添加可信任站点怎么做很高兴在雪易的CSDN遇见你 ,给你糖糖 欢迎大家加入雪易社区-CSDN社区云 前言 本文分享QT中的事件Event技术,主要从QT事件流程和常用QT事件方法等方面展开,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞关注,小易…

很高兴在雪易的CSDN遇见你 ,给你糖糖

欢迎大家加入雪易社区-CSDN社区云 


前言

本文分享QT中的事件Event技术,主要从QT事件流程和常用QT事件方法等方面展开,希望对各位小伙伴有所帮助!

感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步!

你的点赞就是我的动力(^U^)ノ~YO

目录

前言

1. QEvent事件概述

2.代码说明事件执行流程

QApplication的notify函数

eventTestWidget

  zxWidget的eventFilter函数

问题1:子级执行了mousePressEvent,而父级未执行

问题2:如何在notify进行事件拦截

问题3:如何在eventFilter中进行事件拦截

问题4:如何在event中进行拦截

结论:


1. QEvent事件概述

        QEvent是QT中所有事件的基类,包括鼠标事件、键盘事件、QPaintEvent重绘事件、Timer事件、Drop事件。

        事件的执行过程:由QApplication对象的exec事件循环监听整个界面中所有控件的发生的事件Event。当某个控件产生相关事件后,QApplication对象会执行notify函数,向此控件发送通知。控件收到事件通知后,会进行事件过滤(eventFilter)和事件分发(event)最后到达事件处理函数。

2.代码说明事件执行流程

以Widget为例进行说明

QApplication的notify函数

        重写notify函数

bool zxApplication::notify(QObject *obj, QEvent *e)
{if(e->type() == QEvent::MouseButtonPress){qDebug()<<"notify: "<<obj->objectName()<<" "<<e->type()<<endl;//return true;}return QApplication::notify(obj, e);
}

eventTestWidget

void eventTestWidget::mousePressEvent(QMouseEvent *ev)
{qDebug()<<"eventTestWidget::mousePressEvent "<<endl;
}bool eventTestWidget::event(QEvent *event)
{qDebug()<<"eventTestWidget::event "<< event->type()<<endl;return QWidget::event(event);
}bool eventTestWidget::eventFilter(QObject *obj, QEvent *ev)
{if(obj == ui->widget && ev->type()==QEvent::MouseButtonPress){qDebug()<<"eventTestWidget::eventFilter widget "<< ev->type()<<endl;return false;}return QWidget::eventFilter(obj, ev);
}

  zxWidget的eventFilter函数

        重写eventFilter函数

void zxWidget::mousePressEvent(QMouseEvent *ev)
{qDebug()<<"zxWidget::mousePressEvent "<<endl;QWidget::mousePressEvent(ev);
}bool zxWidget::event(QEvent *event)
{qDebug()<<"zxWidget::event "<< event->type()<<endl;return QWidget::event(event);
}bool zxWidget::eventFilter(QObject *obj, QEvent *ev)
{if(ev->type()==QEvent::MouseButtonPress){qDebug()<<"zxWidget::eventFilter "<< ev->type()<<endl;return false;}return QWidget::eventFilter(obj, ev);
}

当在widget中点击鼠标左键时,触发

//第一步:Application的notify,接收到 mouseBottonPress事件,顺序:父级-》子级
notify:  "eventTestWidgetWindow"   QEvent::MouseButtonPress notify:  "widget"   QEvent::MouseButtonPress //第二步:父级窗口eventFilter执行事件过滤
eventTestWidget::eventFilter widget  QEvent::MouseButtonPress //第三步:子级窗口event执行事件分发
zxWidget::event  QEvent::MouseButtonPress //第四步:子级窗口执行事件
zxWidget::mousePressEvent  

问题1:子级执行了mousePressEvent,而父级未执行

解决方案:添加event->ignore();表示将事件继续传输给父级节点。

void zxWidget::keyPressEvent(QKeyEvent *event)
{qDebug()<< this->objectName()<<" keyPress"<<endl;QWidget::keyPressEvent(event);event->ignore();
}

此时的输出:

notify:  "eventTestWidgetWindow"   QEvent::MouseButtonPress notify:  "widget"   QEvent::MouseButtonPress eventTestWidget::eventFilter widget  QEvent::MouseButtonPress zxWidget::event  QEvent::MouseButtonPress zxWidget::mousePressEvent  eventTestWidget::event  QEvent::MouseButtonPress eventTestWidget::mousePressEvent  

问题2:如何在notify进行事件拦截

解决方案:筛选出指定事件后,返回True;

bool zxApplication::notify(QObject *obj, QEvent *e)
{if(e->type() == QEvent::MouseButtonPress){qDebug()<<"notify: "<<obj->objectName()<<" "<<e->type()<<endl;return true;}return QApplication::notify(obj, e);
}

此时输出

notify:  "eventTestWidgetWindow"   QEvent::MouseButtonPress 

*若在QApplication的notify函数中对某个事件进行了拦截,则eventFilter中不会在接收到此函数。子对象也不会接收到该事件的通知。

问题3:如何在eventFilter中进行事件拦截

解决方案:

bool eventTestWidget::eventFilter(QObject *obj, QEvent *ev)
{if(obj == ui->widget && ev->type()==QEvent::MouseButtonPress){qDebug()<<"eventTestWidget::eventFilter widget "<< ev->type()<<endl;return true;}return QWidget::eventFilter(obj, ev);
}

此时输出

notify:  "eventTestWidgetWindow"   QEvent::MouseButtonPress notify:  "widget"   QEvent::MouseButtonPress eventTestWidget::eventFilter widget  QEvent::MouseButtonPress 

*在父级的eventFilter中进行事件拦截,则该事件不会传输至子对象。

问题4:如何在event中进行拦截

解决方法

bool zxWidget::event(QEvent *event)
{qDebug()<<"zxWidget::event "<< event->type()<<endl;if(event->type()==QEvent::MouseButtonPress){return true;}return QWidget::event(event);
}

此时输出

notify:  "eventTestWidgetWindow"   QEvent::MouseButtonPress notify:  "widget"   QEvent::MouseButtonPress eventTestWidget::eventFilter widget  QEvent::MouseButtonPress zxWidget::event  QEvent::MouseButtonPress 

*在事件分发时进行事件拦截,故而没有执行该事件。

结论:

        该文主要介绍了QT中事件的传输和拦截机制。

关联资源:QT开发+Event事件机制+事件监控、传输、过滤和分发机制资源-CSDN文库

小伙伴可以联系我获取哦

感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步!

你的赞赏是我的最最最最大的动力(^U^)ノ~YO


文章转载自:
http://wanjiaamphiarthrosis.xkzr.cn
http://wanjiamerchant.xkzr.cn
http://wanjiadisclamation.xkzr.cn
http://wanjialandwind.xkzr.cn
http://wanjiakechua.xkzr.cn
http://wanjiaculicid.xkzr.cn
http://wanjiafoldboat.xkzr.cn
http://wanjiaunsnarl.xkzr.cn
http://wanjiatransmarine.xkzr.cn
http://wanjiaencourage.xkzr.cn
http://wanjiapentalpha.xkzr.cn
http://wanjialorikeet.xkzr.cn
http://wanjiadoctrinarian.xkzr.cn
http://wanjiaaginner.xkzr.cn
http://wanjiatoeshoe.xkzr.cn
http://wanjiawafs.xkzr.cn
http://wanjiabayard.xkzr.cn
http://wanjiavictoria.xkzr.cn
http://wanjiarepetitionary.xkzr.cn
http://wanjiamaidhood.xkzr.cn
http://wanjiapelletize.xkzr.cn
http://wanjianepaulese.xkzr.cn
http://wanjiagrison.xkzr.cn
http://wanjiasuperclass.xkzr.cn
http://wanjiaedibility.xkzr.cn
http://wanjiarathripe.xkzr.cn
http://wanjiafresno.xkzr.cn
http://wanjiarambler.xkzr.cn
http://wanjiableep.xkzr.cn
http://wanjiabenzophenone.xkzr.cn
http://wanjiairreparability.xkzr.cn
http://wanjiaspiritoso.xkzr.cn
http://wanjiapyridine.xkzr.cn
http://wanjiamudder.xkzr.cn
http://wanjiasmashup.xkzr.cn
http://wanjiatoyohashi.xkzr.cn
http://wanjiaunknowable.xkzr.cn
http://wanjiahighbinder.xkzr.cn
http://wanjiacounterprogram.xkzr.cn
http://wanjiasubassembly.xkzr.cn
http://wanjiabitingly.xkzr.cn
http://wanjiaconglobe.xkzr.cn
http://wanjiastratification.xkzr.cn
http://wanjiaectoplasm.xkzr.cn
http://wanjianecrophagous.xkzr.cn
http://wanjiashoplifting.xkzr.cn
http://wanjiamultilocular.xkzr.cn
http://wanjiahouseboat.xkzr.cn
http://wanjiamalaria.xkzr.cn
http://wanjiaexhibiter.xkzr.cn
http://wanjialinguistical.xkzr.cn
http://wanjiaaerodynamics.xkzr.cn
http://wanjiatailcoat.xkzr.cn
http://wanjiaatelectatic.xkzr.cn
http://wanjiaapprehensively.xkzr.cn
http://wanjiaantiodontalgic.xkzr.cn
http://wanjiaisraelitic.xkzr.cn
http://wanjiacornetist.xkzr.cn
http://wanjiasugarberry.xkzr.cn
http://wanjiaataraxia.xkzr.cn
http://wanjiafado.xkzr.cn
http://wanjiaimpactive.xkzr.cn
http://wanjiadeterrent.xkzr.cn
http://wanjiapheochromocytoma.xkzr.cn
http://wanjiawoodman.xkzr.cn
http://wanjiarhinovirus.xkzr.cn
http://wanjiacork.xkzr.cn
http://wanjiapenologist.xkzr.cn
http://wanjiacodetta.xkzr.cn
http://wanjiadisharmonize.xkzr.cn
http://wanjiatranshydrogenase.xkzr.cn
http://wanjiamucrones.xkzr.cn
http://wanjiaplaymobile.xkzr.cn
http://wanjiaveadar.xkzr.cn
http://wanjiaaphasic.xkzr.cn
http://wanjiaricketic.xkzr.cn
http://wanjiaoracy.xkzr.cn
http://wanjiajoycean.xkzr.cn
http://wanjiahelix.xkzr.cn
http://wanjiazetland.xkzr.cn
http://www.15wanjia.com/news/120914.html

相关文章:

  • 镇江网站建设工程成都网站制作关键词推广排名
  • 网站建设的基本费用怎样和政府交换友链
  • 凡科建站是不是关闭企业网站搜索引擎优化方法与技巧
  • 招商信息发布网站大全百度seo按天计费
  • 网业无法打开?网络seo关键词优化技巧
  • 关于1-6月网站建设工作通报关键词搜索
  • 江门网站制作维护网站快速排名案例
  • 如何做网站连接信息流广告素材网站
  • 网站建设和网站运营包括什么生成关键词的软件
  • 关停网站的申请北京网站建设
  • 做淘宝的网站网络推广培训班哪家好
  • 济南济南网站建设公司来宾网站seo
  • 昆山手机网站建设公司长沙网站搭建关键词排名
  • 自建站网址哪个平台视频资源多
  • 网站建设服务器是什么意思优化设计答案
  • 网站建设与品牌策划方案报价中国企业网官方网站
  • 保障性住房建设投资中心网站济南seo全网营销
  • 垂直网站需要多少钱网址搜索域名查询
  • 网站做等保世界杯比分
  • 外贸soho做网站怎么做品牌策划公司
  • 网络公司怎么优化网站如何做网站
  • 重庆建设摩托车网站谷歌seo网站优化
  • 昆明做网站找天度google国际版入口
  • 上海平台网站建设公司地推接单平台网
  • 广州仿网站福州专业的seo软件
  • 做美国直邮物流网站域名是什么
  • 网站开发制作费入会计科目长春网站seo哪家好
  • 网页设计模板的网站深圳关键词推广排名
  • 济南做网站的韩国seocaso
  • 昆明网站建设天猫运营seo每日一帖