Qt connect()方法Qt::ConnectionType

connect()

Qt,绑定信号和槽原型:

cpp 复制代码
static QMetaObject::Connection connect(const QObject *sender, const char *signal,
                        const QObject *receiver, const char *member, Qt::ConnectionType = Qt::AutoConnection);
cpp 复制代码
static QMetaObject::Connection connect(const QObject *sender, const QMetaMethod &signal,
                        const QObject *receiver, const QMetaMethod &method,
                        Qt::ConnectionType type = Qt::AutoConnection);
cpp 复制代码
inline QMetaObject::Connection connect(const QObject *sender, const char *signal,
                        const char *member, Qt::ConnectionType type = Qt::AutoConnection) const;

Qt::ConnectionType类型:

cpp 复制代码
    enum ConnectionType {
        AutoConnection,
        DirectConnection,
        QueuedConnection,
        BlockingQueuedConnection,
        UniqueConnection =  0x80
    };

作用

在Qt中,ConnectionType是一个枚举类型,用于指定信号和槽之间的连接类型。它定义了四种类型的连接:

  1. AutoConnection:这是默认的连接类型,它由Qt::AutoConnection指定。如果发送对象和接收对象是同一个对象的子对象,或者发送对象和接收对象之间存在继承关系,那么信号和槽之间的连接将被视为AutoConnection类型。在这种情况下,信号发送后将立即调用接收端的槽函数。
  2. DirectConnection:这种连接类型表示信号发送后将立即调用接收端的槽函数。它要求发送对象和接收对象之间存在直接的连接,并且发送对象和接收对象必须是同一个线程中的对象。
  3. QueuedConnection:这种连接类型表示信号将在发送对象的消息队列中排队,然后在适当的时候由事件循环处理。它要求发送对象和接收对象必须是不同的线程中的对象。
  4. BlockingQueuedConnection:这种连接类型与QueuedConnection类似,但是它具有阻塞的特性。也就是说,在接收端处理信号之前,发送端的线程将一直被阻塞,直到信号处理完毕为止。
  5. UniqueConnection:这种连接类型是一个特殊的标记,用于指定只有一个连接可以同时存在。如果尝试创建多个连接到同一个槽函数的连接,那么只有第一个连接会被保留,其余的连接将被删除。

通过指定不同的ConnectionType,可以在不同的场景下选择最合适的连接方式,从而实现更灵活的信号和槽连接。

相关推荐
酷飞飞10 分钟前
Qt Designer与事件处理
开发语言·qt·命令模式
天雪浪子31 分钟前
Python入门教程之赋值运算符
开发语言·python
Wadli36 分钟前
C++语法 | static静态|单例模式
开发语言·c++·单例模式
寻星探路1 小时前
数据库造神计划第九天---增删改查(CRUD)(5)
数据库
他们都不看好你,偏偏你最不争气1 小时前
【iOS】AFNetworking
开发语言·macos·ios·objective-c
Bigemap1 小时前
BigemapPro快速添加历史影像(Arcgis卫星地图历史地图)
java·开发语言
进击的_鹏1 小时前
【C++11】initializer_list列表初始化、右值引用和移动语义、可变参数模版等
开发语言·c++
mark-puls1 小时前
C语言打印爱心
c语言·开发语言·算法
mkhase1 小时前
9.12-QT-基本登陆界面实现
java·jvm·qt
Alan521591 小时前
🚀 阿里云 ECS + MySQL 环境搭建全流程(用于个人博客系统开发)
数据库·程序员