您当前的位置: 首页 >  qt

令狐掌门

暂无认证

  • 1浏览

    0关注

    513博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Qt connect有第5个参数你知道吗?

令狐掌门 发布时间:2021-05-14 16:10:31 ,浏览量:1

  Qt开发中信号槽是常用的技术,正常使用时都是4个参数,很少用到第5个,下面来看看connect的声明: 在这里插入图片描述   第五个参数是连接类型,声明如下:

enum ConnectionType {
        AutoConnection,
        DirectConnection,
        QueuedConnection,
        BlockingQueuedConnection,
        UniqueConnection =  0x80
    };

  由此可知connect一共有5种连接方式,查Qt助手可以知道各自含义,如下:

AutoConnection   默认的连接方式,如果接收方在发出信号的线程中,使用Qt::DirectConnection。否则,使用Qt::QueuedConnection。在发出信号时确定连接类型。在Qt中默认是用的AutoConnection, 所有平时写信号槽时都是4个参数: 在这里插入图片描述

DirectConnection   当发出信号时,插槽立即被调用。槽在发送信号的线程中执行。

QueuedConnection   当控制返回到接收方线程的事件循环时调用槽。槽在接收方的线程中执行。

BlockingQueuedConnection   与Qt::QueuedConnection相同,只是发送信号的线程会阻塞,直到槽返回。如果接收方存在于发送信号的线程中,则不能使用此连接,否则应用程序将死锁。

UniqueConnection   这是一个可以使用按位OR与上述任何一种连接类型组合的标志。当Qt::UniqueConnection被设置时,如果连接已经存在,QObject::connect()将失败(例如,如果相同的信号已经连接到相同的对象对的插槽)。这个标志是在Qt 4.6中引入的。

  在写信号槽时,要注意是否同线程,以及是否需要阻塞。

关注
打赏
1652240117
查看更多评论
立即登录/注册

微信扫码登录

0.0524s