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

定安县网站建设_网站建设公司_GitHub_seo优化

win7 网站系统怎么做,网站记登录账号怎么做,做婚恋网站挣钱吗,博文阅读网站建设很高兴在雪易的CSDN遇见你 #xff0c;给你糖糖 欢迎大家加入雪易社区-CSDN社区云 前言 本文分享QT中的事件Event技术#xff0c;主要从QT事件流程和常用QT事件方法等方面展开#xff0c;希望对各位小伙伴有所帮助#xff01; 感谢各位小伙伴的点赞关注#xff0c;小易…很高兴在雪易的CSDN遇见你 给你糖糖 欢迎大家加入雪易社区-CSDN社区云  前言 本文分享QT中的事件Event技术主要从QT事件流程和常用QT事件方法等方面展开希望对各位小伙伴有所帮助 感谢各位小伙伴的点赞关注小易会继续努力分享一起进步 你的点赞就是我的动力()ノ~ 目录 前言 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() keyPressendl;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文库 小伙伴可以联系我获取哦 感谢各位小伙伴的点赞关注小易会继续努力分享一起进步 你的赞赏是我的最最最最大的动力()ノ~
http://www.ihoyoo.com/news/116432.html

相关文章:

  • 打开网站出现directory濮阳网站建设熊掌网络
  • 悬赏做海报的网站外贸网站为何搜不到
  • 如何做外贸营销型网站做婚庆网站
  • 报班学网站开发价格自己的网络平台怎么做
  • 建设网站价位村网站开设两学一做栏目
  • 建设多语言网站抖音小程序游戏怎么免广告拿奖励
  • 温州建设诚信网站wordpress 页面二维码
  • 高端网站建设网站嘉兴城乡建设网站
  • 广州建立网站客户关系管理案例10个
  • 石泉县城乡建设局网站做改网站
  • 课题网站建设培训简讯洞泾做网站公司
  • dw做的网站如何上传云服务器平潭综合实验区建设工程网站
  • 花箱 东莞网站建设专业制作网站报价
  • 杭州哪家做外贸网站好网站建设 运营
  • 在国外做黄皮网站违法么建筑业大数据服务平台
  • 天津网站建设行业新闻台州市建设规划局网站
  • 想自己做网站需要会什么漯河做网站的公司
  • 电子商务网站建设与网页设计dede模板蓝色大气简洁企业网站模板下载
  • 建网站 域名 空间自己怎么做优惠卷网站
  • 网站建设项目进度计划书扬州外贸网站建设
  • 做微网站 主机 域名评论插件wordpress
  • 潍坊精神文明建设网站微分销系统怎么做
  • 怎么把百度到自己的网站立方米网站
  • 陕西中小企业网站建设推广做网站公司能赚钱吗
  • 哈尔滨网站制作公司价格天津建网站的公司
  • 视频直播网站app开发济南手机建站哪家好
  • 域名备案怎么关闭网站江苏网站开发多少钱
  • 网站批量收录西安专业网络推广公司
  • 都是做面食网站网络营销案例介绍
  • 阿里云服务器上如何做网站游戏网站建设的策划方案