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

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

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

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

    推荐阅读
  • 变速箱油多长时间换一次多少钱 更换变速箱油大概需要多少钱

    变速箱油多长时间换一次多少钱变速箱是汽车中非常精密的系统部件。因此,定期检查和更换变速箱油尤为重要。其实不同的车型对机油的要求不同,变速箱油的更换周期也会不同。目前市场上变速箱油的价格不一样,因为不同型号的变速箱油箱容量也不一样。如果长时间不更换变速箱油,不仅会加速变速箱的老化,还容易造成各部件的摩擦产生金属碎片,从而导致油路故障。

  • 凯特芒果保存方法(凯特芒果怎么保存)

    凯特芒果保存方法由于凯特芒果是热带水果,热带水果怕冷藏,不适宜放在冰箱中冷藏,,否则果皮就会变黑了,买来的芒果有的会看到黑的一小块的果皮,是因为在其生长时受到天气突然的降低被冻的原因。最好放在避光、阴凉的地方进行贮藏。当您收到芒果后,如果芒果还比较生硬,您可以用卫生纸、报纸将其包裹后,平摊在地上。芒果的的枝蒂处要尽量保持干燥完整,切不可把枝蒂处留有的一点枝条全部拔掉,这样芒果易坏。

  • 女子在海底捞就餐身亡(顾客打火机掉进火锅)

    5月15日,昆明海底捞南亚火锅店内,一服务员在火锅里打捞顾客掉进去的打火机时,突发爆炸,顾客和服务员均被锅中红油喷溅。公司已安排专人照顾受伤的服务员。对于是否要追究顾客责任,海底捞回应称,顾客也有轻微烫伤,目前主要以照顾顾客和服务员的伤为主。同时,海底捞提到已经对员工加强培训,提高安全意识,规范此类事情的处理流程。

  • 汀的意思(汀是什么意思)

    接下来我们就一起去了解一下吧!汀洲;绿汀;汀线。岸芷汀兰,出处:北宋范仲淹《岳阳楼记》“岸芷汀兰,郁郁青青。”/屈原《离骚》译文:岸边的香草,小洲上的兰花,香气浓郁,颜色青葱。岸芷和汀兰都是指水边的美丽的花。

  • 谢家湾小学优秀班主任(幸福分享共同成长)

    为进一步加强班主任队伍建设,充分发挥班主任在学校德育工作中的重要作用,及时总结和推广优秀班主任工作经验,切实提升班主任的专业素养和管理能力,助力青年教师成长,9月18日下午民乐县顺化镇张宋小学举办了班主任工作经验交流会。对于习惯养成,要反复训练,严格要求;第二,预见问题,提前教育也很重要,它能防患于未然。此次交流会达到了相互交流、相互学习、经验共享的目的。

  • mate30 mate30屏幕多少钱

    mate305g屏幕刷新率为60Hz,手机搭载了一块6.62英寸的OLED全面屏,屏幕分辨率为2340乘1080像素,显示色彩相当艳丽、细腻。

  • 名爵zs怎么连接carlife(不知道的可以看看)

    下面更多详细答案一起来看看吧!名爵zs怎么连接carlife打开手机的蓝牙功能与车载导航系统的蓝牙功能,实现配对互联,在车载导航的界面上会显示自身的名称与配对密码。开启手机的数据连接与个人热点这两个功能,以便车机系统打开无线wifi时可以顺利的找到此部手机实现互联,wifi连接密码就是个人热点界面下方的一串英文字母。

  • 夏季去湿气喝什么好 夏季去湿气喝什么好茶

    平日可以饮用复方荷叶茶,还能有效地缓解夏季腹泻。苋菜还是减肥餐桌上的主角,常食可以减肥轻身,促进排毒,防止便秘。运动可以缓解压力,促进身体器官运作,加速湿气排出体外。

  • 金针菇怎么做营养价值高(金针菇最好吃的做法)

    金针菇在我的生活中,屡见不鲜,至今没听过有讨厌它的,年轻的朋友,工作劳累休息不好,除了通过休息来缓解疲劳,还可适量的进行食疗,比如雪白的金针菇,补锌抗疲劳,常吃有益身体。

  • 不孕不育怎么备孕最快(为什么备孕已久还怀不上)

    子宫肌瘤超过四厘米就有可能影响生育,如果在生育前切除可能会增加怀孕期间子宫破裂的风险。