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

加强机构编制网站建设力度seo赚钱

加强机构编制网站建设力度,seo赚钱,搜索引擎营销方法,如何做360搜索网站在 Qt 中,event() 函数和特定事件处理函数(如 mousePressEvent())的调用顺序和职责不同,这是由 Qt 的事件分发机制决定的。让我通过源码解析和执行流程来详细解释: 一、核心区别 特性 event () 函数 mousePressEven…

在 Qt 中,event() 函数和特定事件处理函数(如 mousePressEvent())的调用顺序和职责不同,这是由 Qt 的事件分发机制决定的。让我通过源码解析执行流程来详细解释:

一、核心区别

特性

event () 函数

mousePressEvent () 等特定事件函数

调用顺序

先被调用

后被调用(由 event() 内部调用)

事件类型

处理所有类型的事件(需手动判断类型)

仅处理特定类型的事件(如鼠标、键盘事件)

返回值

bool(表示事件是否已处理)

void(无法阻止事件传递)

拦截能力

可通过返回 true 拦截事件

不可拦截,事件会继续向上传递

使用场景

全局事件处理、自定义事件处理

特定事件的业务逻辑处理

二、执行流程源码解析

当事件到达目标对象时,Qt 的核心事件分发逻辑大致如下(伪代码):

 

// QObject::event() 的简化逻辑

bool QObject::event(QEvent *event) {

switch (event->type()) {

case QEvent::MouseButtonPress:

mousePressEvent(static_cast<QMouseEvent*>(event));

if (event->isAccepted()) // 默认接受

return true;

break;

case QEvent::KeyPress:

keyPressEvent(static_cast<QKeyEvent*>(event));

if (event->isAccepted())

return true;

break;

// 其他事件类型...

}

return false; // 事件未处理,继续传递

}

关键点

  1. event() 是入口:所有事件首先到达 event() 函数。
  1. 类型分发:event() 根据事件类型调用对应的特定事件处理函数(如 mousePressEvent())。
  1. 事件状态:特定事件处理函数通过 event->accept() 或 event->ignore() 标记事件是否已处理,但无法阻止事件传递。

三、示例执行流程

当点击按钮时,实际调用链为:

 

1. 全局过滤器 → 窗口过滤器 → 按钮

2. 按钮::event()

└─ 判断事件类型为 MouseButtonPress

└─ 调用按钮::mousePressEvent()

3. 按钮::mousePressEvent() 执行具体逻辑

四、代码验证

修改示例代码,添加 event() 的返回值:

 

bool MyButton::event(QEvent *event) {

if (event->type() == QEvent::MouseButtonPress) {

qDebug() << "[4] 按钮 event() → 鼠标按下";

// 拦截事件,不调用父类实现

return true;

}

return QPushButton::event(event);

}

输出结果

 

[1] 全局过滤器 → Button → QEvent::MouseButtonPress

[2] 窗口过滤器 → Button → 鼠标按下

[4] 按钮 event() → 鼠标按下

变化点

  • mousePressEvent() 不再被调用,因为 event() 返回 true 表示事件已处理。
  • 按钮的默认点击效果(如文本变色、凹陷动画)消失,因为 QPushButton::mousePressEvent() 未被执行。

五、应用场景建议

  1. 使用 event() 的场景
    • 拦截特定类型的事件(如阻止窗口关闭)。
    • 处理自定义事件(通过 QEvent::registerEventType() 注册的事件)。
    • 全局事件监控(如记录所有键盘输入)。
  1. 使用特定事件处理函数的场景
    • 实现控件的核心业务逻辑(如按钮点击、文本框输入)。
    • 修改默认行为(如自定义鼠标拖拽逻辑)。

六、总结

  1. 调用顺序:event() 先于特定事件处理函数被调用,因为它是事件分发的入口。
  1. 职责划分
    • event():控制事件的流向(是否拦截)和类型分发。
    • 特定事件处理函数:实现具体的业务逻辑。
  1. 拦截能力
    • event() 通过返回 true 拦截事件。
    • 特定事件处理函数只能标记事件状态(accept/ignore),无法阻止传递。

理解这一机制后,你可以更精准地控制事件处理流程,避免常见的事件处理错误。


文章转载自:

http://ruAYWkoD.pLpth.cn
http://RiVQPE8u.pLpth.cn
http://9CX5oYts.pLpth.cn
http://vw87FxJn.pLpth.cn
http://SV45ZMV3.pLpth.cn
http://aHgUp2sM.pLpth.cn
http://lFrccShi.pLpth.cn
http://UAQX0ltZ.pLpth.cn
http://YUFeQdDH.pLpth.cn
http://rWE2vzb9.pLpth.cn
http://EVE0Whg0.pLpth.cn
http://rm7p2IBj.pLpth.cn
http://bagZKKEJ.pLpth.cn
http://mbBn40k5.pLpth.cn
http://RGbQmPMh.pLpth.cn
http://x5VMROwk.pLpth.cn
http://ARU6GBkW.pLpth.cn
http://8nddNAWC.pLpth.cn
http://Eio5FkNv.pLpth.cn
http://2MqiTQDA.pLpth.cn
http://ITBbRwyY.pLpth.cn
http://QhJ80xbx.pLpth.cn
http://vPpzoJmG.pLpth.cn
http://ZA9DYO0V.pLpth.cn
http://gUex3C7H.pLpth.cn
http://roW79IZg.pLpth.cn
http://2rGxTIcX.pLpth.cn
http://iN6GpdbY.pLpth.cn
http://sOp6s1Yi.pLpth.cn
http://n31ACNqY.pLpth.cn
http://www.dtcms.com/wzjs/680664.html

相关文章:

  • 筹划建设智慧海洋门户网站免费制作相册
  • 网站开发公司的销售方式百度指数入口
  • 如何建立国外网站如何做招聘网站分析
  • 免费域名做网站安装wordpress出现500
  • 网站各种按钮代码wordpress加首页
  • 外贸建站推广多少钱网站建设的工作流程
  • 西宁整站优化网站企业推广方案
  • 深圳营销网站建设怎样给网站换空间
  • 南宁网站建设方案详细方案网站开发专业有什么工作
  • 网站三个月没排名wordpress主题优化
  • 网站推广方案策划案例wordpress 3.9 wpmu
  • 推荐好的简历制作网站上海专门做网站的公司
  • dede网站地图模版店铺网络推广有哪些渠道
  • 网站中文名广州网页制作服务商
  • 中国建设学会查询网站电脑版和手机版网站怎么做
  • 网站建设丨找王科杰效果好时事新闻最新消息
  • 外贸网站建设与推广安卓app开发培训
  • 做网站的软件著作权本单位门户网站是什么意思
  • 网站建设_制作_设计学校网站建设配套制度
  • 天津市城市建设学校官方网站南昌seo外包公司
  • 深圳网站设计有限公司专业网页设计哪家好
  • 建站系统社区德阳装修公司
  • 平凉公司网站建设网络软文推广案例
  • 平顶山网站关键词优化哪个网站做h5好用
  • 手工艺品网站建设侧胡顺营销培训体系
  • 贵阳市建设厅官方网站天津网站优化方案
  • 台州市城乡建设局网站婚恋网站开发背景文献
  • 咖啡网站设计建设wordpress建设企业官网
  • 达内培训网站开发代做道路毕业设计网站
  • 福州专门做网站网红推广