QT信号槽第五个参数
成长的路上connect⽤于连接qt的信号和槽,在qt编程过程中不可或缺。它其实有第五个参数,只是⼀般使⽤默认值,在满⾜某些特殊需求的时候可能需要⼿动设置。
中国的传统美食Qt::AutoConnection: 默认值,使⽤这个值则连接类型会在信号发送时决定。如果接收者和发送者在同⼀个线程,则⾃动使⽤
枫树林
霍去病传Qt::DirectConnection类型。如果接收者和发送者不在⼀个线程,则⾃动使⽤Qt::QueuedConnection类型。桑葚酒
Qt::DirectConnection:槽函数会在信号发送的时候直接被调⽤,槽函数运⾏于信号发送者所在线程。效果看上去就像是直接在信号发送位置调⽤了槽函数。这个在多线程环境下⽐较危险,可能会造成奔溃。
世界名书Qt::QueuedConnection:槽函数在控制回到接收者所在线程的事件循环时被调⽤,槽函数运⾏于信号接收者所在线程。发送信号之后,槽函数不会⽴刻被调⽤,等到接收者的当前函数执⾏完,进⼊事件循环之后,槽函数才会被调⽤。多线程环境下⼀般⽤这个。
廉洁童谣Qt::BlockingQueuedConnection:槽函数的调⽤时机与Qt::QueuedConnection⼀致,不过发送完信号后发送者所在线程会阻塞,直到槽函数运⾏完。接收者和发送者绝对不能在⼀个线程,否则程序会死锁。
在多线程间需要同步的场合可能需要这个。
Qt::UniqueConnection:这个flag可以通过按位或(|)与以上四个结合在⼀起使⽤。当这个flag设置时,当某个信号和槽已经连接时,再进⾏重复的连接就会失败。也就是避免了重复连接。
义工简历
参考: