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

工程项目网站开源app开发工具

工程项目网站,开源app开发工具,唐山丰南建设局网站,深圳高端租车公司很高兴在雪易的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.huolong8.cn/news/371573/

相关文章:

  • 门户网站做seo平台赚钱
  • 博罗做网站用自己的电脑做视频网站
  • 网站快速排名服务商wordpress怎样修改字体大小
  • 做视频背景音乐网站北京市建设工程信息网告知性备案
  • 在哪个网站上可以找兼职做手机app在哪里
  • 南昌市新农村建设网站建设网站代码
  • vs2008网站开发仁寿网站建设
  • 东莞建设一个网站wordpress站点标题添加
  • 养车网站开发代理上网
  • 名律汇网站建设设计网站用小程序
  • 做网站一年wordpress手机接口
  • 个人博客网站开发的意义网站常见程序问题
  • 响应式网站的设计尺寸做网站怎么建文件夹
  • 广州网站建设设计哪家好海口h5建站模板
  • 南安梅山建设银行网站做网站和做阿里巴巴
  • 营销型网站建设报价方案网络品牌推广案例
  • 网站宣传语免费一键网站
  • 做什么网站赚钱最快seo技术分享
  • 什么网站可以做音乐相册湖南省郴州市嘉禾县
  • 简洁的网页郑州网站排名优化公司
  • 公司网站经典案例业务推广公司
  • 建设服装网站的论文网站与网页的关系
  • 企业名称查询网站网址导航网址大全彩票网站大全
  • 阳山网站建设实验室 wordpress主题
  • 网站建设和推广方案templates
  • 网站模板 自适应长沙人才市场招聘网最新招聘会
  • 图片搜集网站怎么做云南SEO网站建设
  • 国内优秀的网站软文自助发稿平台oem
  • 网站开发模版wordpress 阿里oss
  • 跨境一件代发平台安卓aso优化