欢迎访问Ningto's博客

Menu
  • 首页
  • 归档
  • 关于
  • 书签
  • 必应壁纸
  • IT聚合
  • 工具
    • 我的工具列表
    • 我的网盘
    • 必应每日壁纸API
    • Html转Markdown
    • 仙尘光标
Menu

Qt connect函数参数Qt::ConnectionType的使用场景

最后更新 2018-09-25 07:32:59   阅读量 2058

Table of Contents

  • 1. qt-autoconnection
  • 2. qt-directconnection
  • 3. qt-queuedconnection
  • 4. qt-blockingqueuedconnection
  • 5. qt-uniqueconnection

Qt connect函数参数Qt::ConnectionType的使用场景

信号槽作为Qt中的核心特性对于每一个使用Qt框架的人来说一定要掌握,connect函数是用来连接信号和槽的,虽然这个函数有多个重载的方式,但是这里仅介绍Qt::ConnectionType这个参数的含义以及使用场景。

Qt::ConnectionType是个枚举类型,有如下值:

Qt::AutoConnection
Qt::DirectConnection
Qt::QueuedConnection
Qt::BlockingQueuedConnection
Qt::UniqueConnection

它决定了信号的投递方式以及槽函数的执行方式。

Qt::AutoConnection

如果没有指定Qt::ConnectionType参数,默认就是使用这个值。它有两种表现形式:

  • 如果信号的发行者和接受者在同一个线程就使用Qt::DirectConnection参数
  • 如果信号的发行者和接受者不是同一个线程就使用Qt::QueuedConnection参数

Qt::DirectConnection

当信号发出后槽函数会立刻执行,就像调用回调函数一样。槽函数必然是在发送信号的线程里执行。

Qt::QueuedConnection

当信号发出后槽函数并不会马上执行,应该是投递到队列中,等待下一次的事件循环从队列中取出来再执行。发送者和接受者在不同的线程时你应该明确的使用此参数。

Qt::BlockingQueuedConnection

同Qt::QueuedConnection类似,区别是发送信号的线程会阻塞直到槽函数被执行。所以要注意的是,如果发送者和接受者在同一个线程就会造成死锁。

Qt::UniqueConnection

这个参数可以与上面的参数组合使用(Qt::UniqueConnection | Qt::QueuedConnection),它的作用是可以防止同一个信号槽被多次connect,如果对同一个信号槽进行多次connect,当信号发出后槽函数也会执行多次,如果同一个connect会执行多次你应该使用这个参数。当然还有一种方法是在connect之前先disconnect先前的信号槽。

(转载本站文章请注明作者和出处:泞途 - ningto.com)

下一篇 – Javascript小技巧
上一篇 – koa2处理get,post参数的常见方式

  1. C/C++
  2. Qt

toningto@outlook.com

推荐文章

beast websocket demo

降权启动应用

标签云

Others Qt Go Web Product Javascript Mobile Linux Database Node.js Tools Design MQ Java Shell Bug Android Mac MongoDB Python C/C++ Tips Windows Life React Boost IOS

推广链接

【腾讯云】云产品限时秒杀,爆款1核2G云服务器,首年99元

多谢支持,用了好几年,服务很稳定支持多设备!

其他

文章RSS

Copyright © 2016 Welcome To Ningto Blog | 鄂ICP备17003086号-2