专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

Qt信号与槽

  GUI用户界面中,当用户操作一个窗口部件时,需要其他窗口部件响应,传统方式经常使用callback(回调机制)来实现。所谓回调即事先将函数指针作为参数传递另一个函数,然后在函数处理过程中适当地方调用回调函数回调机制有两个缺陷:类型不安全,不能保证调用函数过程中使用正确的参数;强耦合,处理函数必须知道调用哪个回调函数。Qt的信号与槽机制是类型安全的,松耦合,更灵活,更方便。
  信号与槽(Signal & Slot)是 Qt 编程的基础,也是 Qt 的一大创新。因为有了信号与槽的编程机制,在 Qt 中处理界面各个组件的交互操作时变得更加直观和简单。
  信号(Signal)就是在特定情况下被发射的事件,例如PushButton 最常见的信号就是鼠标单击时发射的 clicked() 信号。发射信号使用Qt的emit关键字。QT 的 signals 关键字指出进入了信号声明区,随后即可声明自己的信号。
  定义信号,如:
  发射信号,如:
  槽(Slot)就是对信号响应的函数。槽就是一个函数,与一般的C++函数是一样的,可以声明在类的任何部分(public、private 或 protected),可以具有任何参数,也可以被直接调用。槽函数与一般的函数不同的是:槽函数可以与一个信号关联,当信号被发射时,关联的槽函数被自动执行。
  声明两个槽方法,如:
  槽方法中处理需要处理的工作,如:
  GUI 程序设计的主要内容就是对界面上各组件的信号的响应,只需要知道什么情况下发射哪些信号,合理地去响应和处理这些信号就可以了。
  信号与槽关联是用 QObject::connect() 函数实现:
  QMetaObject::Connection  QObject:: connect (
  const  QObject  * sender , //信号发送者
  const  char  * signal , //发送的信号
  const  QObject  * receiver , //信号接收者
  const  char  * method , //表示与信号连接的方式的字符串,可以是槽或信号
  Qt::ConnectionType   type  = Qt::AutoConnection //连接方式,默认自动连接
  )
  常用格式:connect(sender, SIGNAL(signal()), receiver, SLOT(slot()));
  用来表示信号和槽的参数都是字符串,Qt提供了两个宏用于构造这样的字符串:对于信号使用SIGNAL,对于槽则使用SLOT,用它们将函数的原型包围起来即可。注意connect方法采用SIGNAL()及SLOT()时,这里的 函数原型只能写出类型,不能有任何参数名 ,否则连接将会失败。
  同时信号与槽连接方式:
  1)Qt::AutoConnection:(默认连接方式)自动方式,由系统自动选择连接方式。
  2)Qt::DirectConnection:直接方式,信号发射时,立即调用槽。
  3)Qt::QueuedConnection:队列方式,信号发射时产生一个事件进入队列,事件被处理时槽才能调用。
  4)Qt::BlockQueuedConnection:阻塞队列方式,信号发射时产生一个事件进入队列,然后当前线程进入阻塞状态,直到事件处理完毕,若接收方位于发送信号的线程中,则程序会死锁,故此连接方式仅用于多线程。
  信号可以看做是特殊的函数,需要带括号,可带参数,信号无需实现也不能实现。槽函数需要带括号,有参数时还需要指明参数。当信号和槽函数带有参数时,在 connect()函数里,要写明参数的类型。信号的参数需与槽的参数列表一致,允许比槽参数多。如果不匹配或参数过少,会出现编译错误或运行错误。在使用信号与槽的类中,必须在类的定义中加入宏 Q_OBJECT。当一个信号被发射时,与其关联的槽函数通常被立即执行,就像正常调用一个函数一样。只有当信号关联的所有槽函数执行完毕后,才会执行发射信号处后面的代码。
  信号与槽的关联方式有如下特点: 一个信号连接一个槽:
  connect(sender, SIGNAL(single1()), receiver, SLOT(slotFun()));
  如:
  一个信号连接一个信号:
   connect(sender, SIGNAL(single1()), receiver, SIGNAL(single2()));
  如:
  一个信号连接多个槽,关联信号的槽函数按照建立连接时的顺序依次执行:
  connect(sender, SIGNAL(single1()), receiver1, SLOT(slotFun()));
  connect(sender, SIGNAL(single1()), receiver2, SLOT(slotFun()));
  connect(sender, SIGNAL(single1()), receiver3, SLOT(slotFun()));
  如:
  多个信号连接一个槽:
  connect(sender1, SIGNAL(single1()), receiver, SLOT(slotFun()));
  connect(sender2, SIGNAL(single2()), receiver, SLOT(slotFun()));
  connect(sender3, SIGNAL(single3()), receiver, SLOT(slotFun()));
  如:
  信号与槽的自动关联:
  ui_xxxx.h文件中 connectSlotsByName()方法通过对象名支持信号与槽的自动关联。不采用connect()函数而是采用on_objectName_signal命名方式命名槽达到自动关联的效果。
  如类头文件中声明槽方法:
  点击领取Qt学习资料+视频教程~「链接」
  信号与槽的断开关联:
  QObject::disconnect(const QObject* sender,const char* signal,const QObject *receiver,const char* method); 断开与一个对象所有的信号的所有关联
  disconnect(sender,0,0,0);
  等价于:
  sender->disconnect(); 断开与一个指定信号的所有关联
  disconnect(sender, SIGNAL(single1()), 0, 0);
  等价于:
  sender->disconnect(SIGNAL(single1())); 断开与一个指定接受者receiver的所有关联
  disconnect(sender, 0, receiver, 0);
  等价于:
  sender->disconnect(SIGNAL(single1())); 断开指定信号与槽的关联:
  disconnect(sender, SIGNAL(single1()), receiver, SLOT(slotFun()));
  等价于:
  disconnect(myConnection); //myConnection为connect()的返回值
  如:
  xxx.h文件中添加m_res变量用于保存connect()返回值。
  连接信号与槽:
  断开该连接:
  信号与槽机制的优越性: 信号与槽机制是类型安全的,相关联的信号与槽参数必须匹配 信号与槽是松耦合的,信号发送者不知道也不需知道接受者的信息。 信号与槽可以使用任意类型的任意数量的参数。

那些年,我们一起写过的纸条那些年,我们一起写过的纸条那是一个,手机一点儿都不盛行的年代。那个年代里的我们,安静的自习教室里,两个不同学校中的朋友,从来不会用手机短信,或是qq消息这样快速,便捷的通讯工具来传世界以痛吻我,要我报之以歌这几天心里颇不宁静。某天上课的时候,我的一位老师突然说有哪位同学家里是真正的农民,就是现在还在乡下种地的农民,你们不要害怕举手,不要感到尴尬,如果你是这种情况,你还坐在985大学的坎波斯姆巴佩潜力只发挥出不到一半这将是史上最激烈的世界杯直播吧11月19日讯巴黎总监坎波斯在不久前接受采访,谈及姆巴佩和世界杯的相关话题,姆巴佩他仍然仅发挥出40到50的潜力,我每天都这么跟他说的。他仍然可以继续提高,因为他还处于成长期何家弘卡塔尔世界杯的幕后第22届男足世界杯2022世界杯于2022年11月20日在卡塔尔开幕。作为国际足联的道德委员会委员,我应邀去卡塔尔开会,并且观看世界杯的足球比赛。国际足联道德委委员眼中的世界杯与足感动异地恋女朋友的暖心话,很甜很撩人1。一辈子和你在一起,才叫将来,换了别人,那叫将就。2。好像突然就不喜欢热闹了,好像突然很多事情就看开了,好像突然失去了生活的目标,只是感觉迷茫,是生活太无奈,还是我们变得顺其自然fat文件系统查找删除创建目录Fat文件系统查找过程查找一个文件是通过文件名查找的,对于fat文件系统,可以直接从vfatlookup函数看主体流程如下vfatlookupvfatfindfatsearchlo加强产销对接促进蔬菜销售切实维护广大农民群众利益河南日报记者刘晓波11月18日,省政府召开全省重点市县蔬菜促销电视电话会议,传达省委省政府主要领导批示要求,安排部署蔬菜促销工作。副省长武国定出席会议并讲话。在调度有关市县蔬菜促销在贵池,有3万多名群众与警察蜀黍成为群友,看看他们都聊些什么?微信群聊已经成为我们必不可少的沟通窗口但你有和警察叔叔同在微信群吗?现如今,在贵池,除了电话短信等报警方式外动动手指,就能在微信群警察蜀黎零距离寻求帮助请问办理居住证需要什么手续?中国首位歼10女飞行员余旭30岁壮烈牺牲,36万群众手捧菊花送别2016年11月20日,36万群众从全国各地赶来,他们奔向同一个目的地,崇州市体育中心。体育场外,群众们手捧鲜花牵着黑白横幅,饱含泪水,声声哀怨,现场被悲伤的气氛笼罩着。而送来的鲜澳大利亚模特艾比李克肖(AbbeyLeeKershaw)拍摄的时尚杂志AbbeyLeeKershaw拍摄封面星期日泰晤士报风格澳大利亚模特艾比李克肖(AbbeyLeeKershaw)身着HediSlimane设计的Celine造型,为星期日泰晤士报(孤独星球杂志中国版停刊冒险曾是最酷的事每一个曾经的背包客,都有和孤独星球不得不说的故事。在互联网不发达的时代,几乎每去一个新国家或地区之前,人们都要习惯性地先读一读LonelyPlanet,看看他们的作者是如何看待这个
分手要给大笔分手费,50岁的奥尼尔为何还频繁更换女友?人生赢家奥尼尔,虽然已经退役多年,奥尼尔已经是NBA联盟人气最旺的球员之一,如果这个区域的范畴是退役,应该没有那一个退役的球员比奥尼尔的人气更往,当然那个一年赚到1亿美元不说话的家广东队三消息队长人选确定,徐杰续约年薪上涨,大外援定位蓝领队长人选确定。北京时间9月17日,CBA休赛期的第四个月,目前各支球队进入到最后的补强集训冲刺阶段,随着马尚归队,大外援的确定,广东男篮新赛季20人大名单已经正式确定下来,新任队长穆里尼奥追平了弗格森的记录,曼联的伟大终于被追平了前曼联主帅穆里尼奥追平了曼联传奇弗格森爵士自1992年以来在欧洲比赛中赢得最多胜利的纪录,周四晚上罗马击败了HJK。凭借保罗迪巴拉洛伦佐佩莱格里尼和安德烈贝洛蒂的进球,意大利豪门在亚洲足坛刺激一夜3队出线6队出局!伊朗80,中国12U20亚洲杯预选赛接近尾声,随着第四个比赛日的结束,又提前诞生6支被淘汰的球队,包括缅甸队不丹队老挝队斯里兰卡队中国香港队东帝汶队,目前已经确定10队无缘决赛圈。此外,这一夜也有提一个人命里的姻缘,是有定数的人生在世命也运也布大道于天下施善念于人心虽无修行身亦是修行人洞明修行苦方开修行门众生之相从前慢从前的日色变得慢车,马,邮件都慢一生只够爱一个人那个时候的爱情,总是简单而纯粹,虽然穷治愈你心灵干净文案为了使在成长的道路上的大家充满斗志励志文案正能量治愈干净,欢迎大家阅读。1。你的人生永远不会辜负你,那些转错的弯,那些走错的路,那些流下的泪,那些滴下的汗水,那些留下的伤痕,全都让散文花开半夏,草木一秋,像一潭秋水的平静,似一株傲霜的秋菊时光缓缓,岁月悠悠,白苍苍的芦荻花,又写意着秋天,我在一弯秋水里,又念起故人。夜空,中秋的那轮满月,又亏了几圈,草尖沾着的露水,似乎又凉了一层,不觉间,秋又深了几许。九月,像个素净渡边淳一失乐园我梦想在人生最幸福的时候死去太幸福了,就会担心幸福能持续多久。那种时候如何是好?只有一死啊。凛子外表端庄高贵,像她讲授的楷书那般中规中矩不可侵犯床上却极尽妖艳淫荡之能事,让久木沉沦得无法自拔。凛子始终执着于年广东终于有了大外援,抢篮板和护框劲爆,这次杜锋要找杨鸣复仇了广东终于有了大外援,抢篮板和护框劲爆,这次杜锋要找杨鸣复仇了之前就据媒体人半神半卡特报道,奥克塔维尤斯埃利斯已经接近加盟一支CBA球队。半神半卡特这样写道奥克塔维厄斯埃利斯接近加盟童年时期的电脑单机热门老游戏大家好啊,我是一个平时闲来没啥事爱玩玩单机游戏的老游戏迷,鸭仔。鸭仔最近回顾了一下从小到大的点点滴滴,虽然很多都是日常很平凡的事情,但仍然有一些事物和经历给年幼的自己留下了深刻的印4消息!篮网签2将,湖人内情曝光,开拓者传利好,爵士官宣新决定北京时间9月17日,距离新赛季开战越来越近,但NBA多支球队补强的步伐仍然没有停止。就在昨天夜里,NBA又达成几笔新签约消息,经过小编梳理,大概可以总结为4消息!篮网签2将,湖人内
友情链接:快好知快生活快百科快传网中准网文好找聚热点快软件