美文网首页
Qt::ConnectionType

Qt::ConnectionType

作者: Magic11 | 来源:发表于2019-06-26 11:11 被阅读0次

Qt::AutoConnection: 如果receiver在同一线程,使用Qt::DirectConnection,否则使用Qt::QueuedConnection。

Qt::DirectConnection:槽函数invoked在发信号的线程,如果对象不在同一线程,可能出现问题。

Qt::QueuedConnection:槽函数invoked在接收者线程进入事件循环时,工作在接收者线程。

Qt::BlockingQueuedConnection:类似Qt::QueuedConnection,但会阻塞发信号线程的执行,必须要求收发在不同线程。

Qt::UniqueConnection:能与上面任何一种方式联合使用,当connection已存在时,connect会失败。


connect用于连接qt的信号和槽,在qt编程过程中不可或缺。它其实有第五个参数,只是一般使用默认值,在满足某些特殊需求的时候可能需要手动设置。

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

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

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

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

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

相关文章

  • Qt::ConnectionType

    Qt::AutoConnection: 如果receiver在同一线程,使用Qt::DirectConnectio...

  • Qt::ConnectionType

    Qt::AutoConnection: 如果receiver在同一线程,使用Qt::DirectConnectio...

  • Fedora19 如何安装QT

    sudo yum install qt qt-devel qt-x11 qt-doc qt-demos qt-ex...

  • Qt Designer使用技巧

    编译Qt Designer 安装Qt时,选择安装源码 用Qt Creator打开C:\Qt\Qt5.5.0\5.5...

  • Qt 安装环境

    Qt 安装 1.1 QT下载地址 http://download.qt.io/archive/qt/ 1.1.1 ...

  • QT5.9+MSVC2015+OPENCV4.0.0搭建

    1.资源准备 QT Qt所有版本http://download.qt.io/archive/qt/我下载了QT5....

  • Qt5学习地址

    Qt 学习之路 2(1):序(Qt 学习之路 2(1):序) Qt 学习之路 2(2):Qt 简介(Qt 学习之路...

  • QT

    vs2019下QT环境搭建 下载qt5.14 https://download.qt.io/archive/qt[...

  • Qt

    qt source http://download.qt.io/official_releases/qt/6.0/...

  • qt配置基于vs2019

    qt download:https://download.qt.io/archive/qt/[https://do...

网友评论

      本文标题:Qt::ConnectionType

      本文链接:https://www.haomeiwen.com/subject/digqcctx.html