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

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

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

使用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大致相同。

    推荐阅读
  • 京东怎么开通店铺虚拟物品(京东入驻汽车用品类目)

    随着咱们Z世代的消费主力军,购车的需求增长外,据数据显示有超80%车主会进行车内外装饰,这个加速汽车用品市场需求扩增,京东作为国内大型电商市场,深受商家的入驻青睐。除美孚、壳牌和嘉实多外,其他机油品牌只接受一级授权,入驻交纳5万质保金。总而言之,在互联网趋势下,早日布局线上,结合线下才能拓展销量,不会入驻京东的商家,留言私信小编即可。

  • 中国朝代顺序表(中国历史朝代顺序表)

    以前我们可能以这样的方式大概记住中国历史朝代,具体的可能不是很了解,包括夏商之前我们也不是很了解。夏商与西周东周分两段春秋和战国一统秦两汉三分魏蜀吴二晋前后沿南北朝并立隋唐五代传宋元明清后皇朝至此完。下面我们以图片的形式来了解一下中国历史朝代顺序吧。中国历史朝代顺序表:

  • 羊肉薄饼做法(一个人也要好好的吃饭)

    一个人也要好好的吃饭不知道亲们,吃过羊肉薄饼了么,很好吃的一道菜,很像是薄薄的葱油饼里夹着炒制的羊肉,这么形容不知道您能不能明白,其实就是外皮很薄的羊肉馅饼,我就不废话了,就直接给大家分享一下制作过程,希望你们喜欢​羊肉。

  • 微商怎么才可以招更多代理(微商怎样谈代理)

    微商怎么才可以招更多代理对于微商来说,您的好友数量毕竟很有限,多招到一个代理,多一个人帮您卖货,多一个人发到他的朋友圈,您就多了一份生意。微商网33weishang推出的微商实名认证服务,也一定程度上能帮助您解决该问题。

  • 冬天扦插春天开花(五月扦插一棵它)

    五月扦插一棵它飘香藤属于夹竹桃科的双腺藤属植物,是一种常绿植物,它的藤蔓可以通过支架缠绕,爬藤特别长,开花鲜艳如一朵朵的大喇叭花,花色有粉色红色,淡紫色等等,飘香藤开花是有香味的,比较淡淡的香气,淡雅清新在阳台或是。

  • 熟土豆吃起来酸的(居然是这个原因)

    下面内容希望能帮助到你,我们来一起看看吧!熟土豆吃起来酸的土豆吃起来酸是因为土豆储藏条件不恰当了。土豆是马铃薯的块茎,马铃薯块茎在无氧或氧气太缺乏的情况下进行无氧呼吸作用,它的产物并不是酒精而是乳酸,因此吃起来会有酸的味道。如果土豆(马铃薯)长期在这种条件下储存是很容易坏掉的,当乳酸积累到一定程度就会毒害细胞,最后导致块茎的腐烂。有一点发酸正是无氧呼吸的初期,正是变坏的开始。

  • 三年十万公里质保范围 三年十万公里质保是质保哪些东西

    总的来说,除了耗材,其余都在三年10万公里质保范围内。需要注意的是,只有在正常使用下出现问题才能保修。如果是事故、改装或天灾人祸等人为因素造成的,则不在保修范围内。这种物品不在保修范围内。维修手册或车辆使用说明书中通常会有详细说明,以上述说明为准。一年三十万公里,只要满足两个条件中的一个,就认为到期。比如三年开了7000公里,算是到期了;或者一年10万公里,算到期。

  • 夫妻间经常做这几件事(最好别进行夫妻生活)

    ·注意力度夫妻生活过程中力度要适宜,否则会损伤重点器官,还容易导致女性盆腔充血。

  • 荆棘代表什么意思(荆棘解释)

    以下内容大家不妨参考一二希望能帮到您!荆棘代表什么意思荆棘是一个词语,读音是jīngjí,从字意上讲,泛指山野丛生多刺的灌木。在文学用语中多指奸佞小人、纷乱、喻艰险境地等意,又有芥蒂、嫌隙之意。一帆风顺、平步青云只不过是美好的愿望罢了。

  • 宋庆龄为何要与保姆同葬(宋庆龄为何要与保姆同葬)

    但是有一说一,这二人的爱情道路不是一帆风顺的,他们二人的爱情遭到了宋庆龄父母的反对。死后不与丈夫分享荣光宋庆龄与丈夫孙中山大婚之后成为了他的贤内助,也正式开启了她的革命生涯。但是不幸的是她与孙先生的婚姻只持续的十年,孙中山先生为了中国的革命事业积劳成疾,身体被拖垮了,终于在1925年孙中山先生与世长辞,享年59岁。于是在宋庆龄死后,人们依其遗愿将她葬在了父母的身边。