高考考试网
当前位置: 首页 高考资讯

qt信号槽画图(QT的信号槽机制简介)

时间:2023-08-17 作者: 小编 阅读量: 4 栏目名: 高考资讯

使用QT开发时,我们一般要使用到信号槽机制,这个机制由三部分组成:信号、槽、连接函数connect,我们主要说下connect函数,了解清楚此函数,信号槽机制也基本上懂了。这个在多线程环境下比较危险,可能会造成奔溃。接收者和发送者绝对不能在一个线程,否则程序会死锁。在多线程间需要同步的场合可能需要这个。也就是避免了重复连接。

使用QT开发时,我们一般要使用到信号槽机制,这个机制由三部分组成:信号、槽、连接函数connect,我们主要 说下connect函数,了解清楚此函数,信号槽机制也基本上懂了。

快乐学习

我们一般情况下我们使用connect函数只传递四个参数:

connect(Sender,SIGNAL(signal),Receiver,SLOT(slot));

这四个参数分别是发送者对象、发送者对象发送的信号、接收者对象、接收者对象响应该信号的槽函数,所以我们有可能认为该函数就只有四个参数,但实际上是有第五个参数的,只是通常该函数已经给第五个参数赋值了而已,我们所使用的是默认值。实际上connect函数应该是如下形式:

bool QObject::connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method, Qt::ConnectionType type = Qt::AutoConnection )

Qt::DirectConnection参数 参数含义

Qt::AutoConnection 默认值,使用这个值则连接类型会在信号发送时决定。如果接收者和发送者在同一个线程,则自动使用Qt::DirectConnection类型。如果接收者和发送者不在一个线程,则自动使用Qt::QueuedConnection类型。

Qt::DirectConnection 槽函数会在信号发送的时候直接被调用,槽函数运行于信号发送者所在线程。效果看上去就像是直接在信号发送位置调用了槽函数。这个在多线程环境下比较危险,可能会造成奔溃。

Qt::QueuedConnection 槽函数在控制回到接收者所在线程的事件循环时被调用,槽函数运行于信号接收者所在线程。发送信号之后,槽函数不会立刻被调用,等到接收者的当前函数执行完,进入事件循环之后,槽函数才会被调用。多线程环境下一般用这个。

Qt::BlockingQueuedConnection 槽函数的调用时机与Qt::QueuedConnection一致,不过发送完信号后发送者所在线程会阻塞,直到槽函数运行完。接收者和发送者绝对不能在一个线程,否则程序会死锁。在多线程间需要同步的场合可能需要这个。

Qt::UniqueConnection 这个flag可以通过按位或(|)与以上四个结合在一起使用。当这个flag设置时,当某个信号和槽已经连接时,再进行重复的连接就会失败。也就是避免了重复连接。

sender和receiver是QObject对象指针,函数里面我们用到了Qt提供的两个宏SIGNAL()和SLOT();这是Qt要求的,要关联信号和槽必须借助于这两个宏,两个宏的定义如下:

#define SLOT(name) "1"#name

#define SIGNAL(name) "2"#name

通过这两个宏,就可以把我们传递进去的槽和信号的名字转化成字符串,并在这两个字符串前面加上附加的字符。Qt5又在此基础上扩展了一种写法不必用到两个宏SIGNAL()和SLOT(),而是直接写&类名::信号或者&类名::槽函数。一个信号可以和多个槽相连;也可以多个信号可以连接一个槽;也有一个信号可以连接到另一个信号;一个对象delete之后,Qt自动取消所有连接到这个对象上面的槽,有时候我们需要手动去断开连接,如下情况:

有时我们程序中某些情况下某个操作需要断开这个信号槽连接,操作结束后有需要重新连接,断开连接时,那我们需要调用函数

bool QObject::disconnect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method )

用法和connect大致相同。

    推荐阅读
  • 氦气是什么(氦气详解)

    氦气,稀有气体元素的一种,英文名为Helium,元素符号为He,原子序数2无色无味的惰性气体,化学性质不活泼,一般状态下很难和其它物质发生反应,今天小编就来聊一聊关于氦气是什么?氦气是什么氦气,稀有气体元素的一种,英文名为Helium,元素符号为He,原子序数2。氦气是仅次于氢气的宇宙中含量第二的元素,占星系星体大约24%的质量。1903年,美国的天然气油田中发现了大量的氦。

  • 遥远的她张学友歌词解析(遥远的她歌词释义)

    遥远的她张学友歌词解析?遥远的她讲述的是一个男孩深爱着一个女孩,他们彼此相爱,偏偏天意弄人,那女孩不幸患上了血癌得知自己将不久于人世,女孩剪下自己一缕长发给男孩留作最后的纪念,让他记得自己,叮嘱男孩一定要坚强的活下去,下面我们就来聊聊关于遥远的她张学友歌词解析?遥远的她张学友歌词解析遥远的她讲述的是一个男孩深爱着一个女孩,他们彼此相爱,偏偏天意弄人,那女孩不幸患上了血癌。

  • 混动车适合跑长途吗(混动车适合跑长途吗知乎)

    一般来说,在跑长途的时候,混合动力汽车可以采用纯燃油模式,这样车辆的功率相对较大,速度也会相对较快。截至2019年8月,市场上所有的混合动力汽车都可以通过发动机为电机充电。我们可以将车辆的SOC值调整到60%左右,当汽车检测到电机的电功率下降到60%时,可以通过发动机进行充电,这样就不用担心混合动力汽车在长途行驶过程中电机断电带来不必要的麻烦。混合动力汽车长途行驶时,要注意切换气电模式。

  • 薄伽丘十日谈讲什么(每日一读十日谈)

    点击上方“新乡检察”可订阅哦!我们在浩瀚书海中寻找明珠,每周带您读完一本书籍。这里是新乡检察“每日一读”栏目,每天与您相约!“每日一读”栏目征稿也许有段文字让你怀念时光,也许有个故事让你拍案叫绝,也许有本书让你受益匪浅……请来信告诉我们吧!予人玫瑰,手有余香。

  • 百天小宝宝祝福语唯美简短(宝宝百天祝福语一句话)

    聪颖事业庞,氏族项城锦绣长。让父母在辛苦的工作之余有了一种寄托,一种期盼。朝着明确的目标,飞向美好的人生。送您一个“氏”,好的姓氏永远庇佑您!天行万里平安度,快意精灵茁壮长,乐者赐福送吉祥。这孩子必定万事顺意,宏图大展。

  • 逆流的鱼(逆流而上的鱼)

    一年之计在于春春天在哪里!春天来临,万物复苏,百花争艳!让人感受是清新,暖暖和煦!内在打破是生命儿子一旁玩耍,用手扒开一堆枯叶,下面有新生命努力的破土而出!顿时觉得,生命的伟大!在外打破,只是美味,是鸡蛋!人生要想不白白走一遭!不要做随波逐流的叶!

  • 奔驰v250最新价格商务车(进口的奔驰V250长近5米4配7座)

    车身尾部与国产的V260相差不大,方正无奇。动力上,该车搭载一台高功率的2.0T,最大扭矩为350牛米,匹配奔驰的7速变速箱,可以在各种行驶状态下尽可能地保持低转速,省油且平顺,驾驶体验比埃尔法强太多。

  • 排骨豆角的做法大全家常(排骨豆角如何做)

    排骨豆角的做法大全家常做法一:食材:排骨,豆角,葱姜蒜(切段),豆油2大勺,料酒2汤勺,白糖3汤勺,酱油2汤勺,花椒粒1个,干辣椒2根,盐,味精适量。开锅加少许料酒,去肉腥。放完料酒,扣盖,小火炖10分钟,尝下咸淡,再转入大火炖20分钟。

  • 双镜九爷是谁 双镜里的九爷是谁

    在悬疑剧《双镜》中,九爷是一个是从黑社会洗白的大佬,江湖人称九爷。基本信息《双镜》是由欢娱影视出品,bilibili联合出品、独家播出,李达超执导,张楠、孙伊涵、刘智扬、何奉天、周大为等主演的民国情感悬疑剧。剧情简介故事发生在民国时期的上海滩,知名作家许幼怡和照相馆老板严微,两个生活本应毫无交集的女人,因为许幼怡丈夫的背叛和一桩连环凶案结识。她俩邂逅相逢,然后联手灭渣男、除小三、拯救各自的人生。

  • 中国好声音歌单(第一期好声音歌单)

    中国好声音歌单?《Rollinginthedeep》黄鹤《春天里》黄勇,我来为大家讲解一下关于中国好声音歌单?跟着小编一起来看一看吧!