第一句子大全,网罗天下好句子,好文章尽在本站!

QT编程入门系列文章之二十——事件接收与忽略

时间:2024-01-04

或许这一章不能有一个完整的例子,因为对于事件总是感觉很抽象,还是从底层上理解一下比较好的吧!前面说到了事件的作用,下面来看看我们如何来接收事件

友情提示:本文共有 805 个字,阅读大概需要 2 分钟。

本章内容也是关于Qt事件。或许这一章不能有一个完整的例子,因为对于事件总是感觉很抽象,还是从底层上理解一下比较好的吧!

前面说到了事件的作用,下面来看看我们如何来接收事件。回忆一下前面的代码,我们在子类中重写了事件函数,以便让这些子类按照我们的需要完成某些功能, 就像下面的代码:

voidMyLabel::mousePressEvent(QMouseEvent*event)

{

if(event->button()==Qt::LeftButton){

// dosomething

}else{

QLabel::mousePressEvent(event);

}

}

上面的代码和前 面类似,在鼠标按下的事件中检测,如果按下的是左键,做我们的处理工作,如果不是左键,则调用父类的函数。这在某种程度上说,是把事件向上传递给父类去响 应,也就是说,我们在子类中“忽略”了这个事件。

我们可以把Qt的事件传递看成链状:如果子类没有处理这个事件,就会继续向其他类传 递。其实,Qt的事件对象都有一个accept()函数和 ignore()函数。正如它们的名字,前者用来告诉Qt,事件处理函数“接收”了这个事件,不要再传递;后者则告诉 Qt,事件处理函数“忽略”了这个事 件,需要继续传递,寻找另外的接受者。在事件处理函数中,可以使用isAccepted()来查询这个事件是不是已经被接收了。

事实上,我们很少使用accept()和ignore()函数,而是想上面的示例一样,如果希望忽略事件,只要调用父类的响应函数即可。记得我们曾经说 过,Qt 中的事件大部分是protected的,因此,重写的函数必定存在着其父类中的响应函数,这个方法是可行的。为什么要这么做呢?因为我们无法确认 父类中的这个处理函数没有操作,如果我们在子类中直接忽略事件,Qt不会再去寻找其他的接受者,那么父类的操作也就不能进行,这可能会有潜在的危险。

本文如果对你有帮助,请点赞收藏《QT编程入门系列文章之二十——事件接收与忽略》,同时在此感谢原作者。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
显示评论内容(7)
  1. 盛夏阑珊 -2024-01-18 15:32盛夏阑珊 -[天津市网友]101.1.1.199
    非常感谢作者的分享,希望能再多出一些进阶的主题讲解!
    顶0踩0
  2. 杜文敬2024-01-16 13:41杜文敬[新疆网友]220.242.127.218
    @融雪我觉得对于入门级别的小白来说,这篇文章稍微有点复杂了。
    顶0踩0
  3. 融雪2024-01-14 11:51融雪[贵州省网友]182.49.0.60
    @♡丶相依这个系列文章真的非常全面,是学习QT编程的必备资料!
    顶9踩0
  4. ♡丶相依2024-01-12 10:00♡丶相依[重庆市网友]163.53.221.19
    作者的讲解非常清晰,让我一下子就理解了事件接收与忽略的概念。
    顶0踩0
  5. 欧2024-01-10 08:10[台湾省网友]203.3.139.6
    感觉这篇文章的内容有点难,我还需要多练习一下。
    顶0踩0
  6. 哒哒哒、2024-01-08 06:20哒哒哒、[湖南省网友]103.44.132.105
    事件接收与忽略是我一直想了解的话题,感谢作者的详细讲解!
    顶0踩0
  7. 风细柳斜斜2024-01-06 04:29风细柳斜斜[青海省网友]202.92.134.110
    这个系列文章真是太有用了,帮我入门QT编程很有帮助!
    顶31踩0
相关阅读
万字长文 一篇吃透WebSocket:概念 原理 易错常识 动手实践

万字长文 一篇吃透WebSocket:概念 原理 易错常识 动手实践

...;2)WebSocket 对象的属性;3)WebSocket 的方法;4)WebSocket 事件。接下来我们从 WebSocket 的构造函数入手开始学习。PS:如果你想要更浅显的WebSocket入门教程,可以先读这篇《新手快速入门:WebSocket简明教程》后,再回来继续学习...

2023-12-31 #经典句子

每日一书:《Python核心编程 第3版 中文版》PDF高清版

每日一书:《Python核心编程 第3版 中文版》PDF高清版

...ib.SMTP类方法923.4.5交互式SMTP示例933.4.6SMTP的其他内容943.4.7接收电子邮件943.4.8POP和IMAP953.4.9Python和POP3953.4.10交互式POP3示例963.4.11poplib.POP3类方法973.4.12客户端程序SMTP和POP3示例983.4.13Python和IMAP41003.4.14交互式IMAP4示例1003.4.15imaplib.IMAP4...

2010-05-15 #经典句子

核桃编程怎么样?和编程猫有什么区别?一文给你说清楚

核桃编程怎么样?和编程猫有什么区别?一文给你说清楚

...答复函》),答复了全国政协委员提出的《关于稳步推动编程教育纳入我国基础教学体系,着力培养数字化人才的提案》。提案发布之后,让不少家长意识到编程教育的重要性,开始张罗着给孩子报编程课程,不想让孩子输在起...

2010-05-26 #经典句子

python编程从入门到实践:使用文件的内容

python编程从入门到实践:使用文件的内容

想了解更多精彩内容,快来关注小龙谈数学说Python1.C语言学习笔记:可使用方法replace()将字符串中的特定单词都替换为另一个单词。下面是一个简单的示例,演示了如何将句子中的“dog”替换为"cat":>>> message="I really like dogs.">>> ...

2023-12-08 #经典句子

长文分享:AI算法工程师炼成之路

长文分享:AI算法工程师炼成之路

...时,特别好用。我的笔记本配置:(不考虑经济约束的请忽略这条)牌子+型号:ThinkPad X1 Carbon推荐配置:i7+16G内存+256G(或更多)硬盘系统推荐:Linux,因为开源,有空可以玩玩校招/社招/实习/面试经验如何安排校招大厂的开放时...

2015-11-27 #经典句子

写了篇爬虫文章 收到份律师函?

写了篇爬虫文章 收到份律师函?

...不只是 requests 请求两下就算爬虫,基本上涉及到计算、编程开发的方方面面,希望大家可以一起学习、进步。-------------------End -------------------

2013-02-16 #经典句子

学java编程一定要会英语吗?关于这个我给你说句实话

学java编程一定要会英语吗?关于这个我给你说句实话

最近收到很多同学的这样一个问题,就是说学习Java编程一定需要很好的英语吗?是不是英语不好就不能学习Java了?我相信一直有很多小伙伴被这个问提所困扰,因为我们可能都知道,学习编程都是用英文在写相关代码。那么我...

2023-10-31 #经典句子

教孩子写游戏:快速入门C++语言 理解这12个概念 1天时间够了

教孩子写游戏:快速入门C++语言 理解这12个概念 1天时间够了

...规律就是所谓的机器语言。如你所想,机器语言也是一种编程语言,只不过放眼望去,机器语言的代码全部是0和1的组合,不是特别专业的人,绝对看不懂写了什么。不过,机器语言的好处是计算机能直接读懂。但是,机器语言...

2023-02-01 #经典句子