Qt之connect函数使用

在Qt中,connect函数用于连接信号和槽,它有五个参数。

以下是connect函数的五个参数及其含义:

  1. 第一个参数:发送信号的对象
  2. 第二个参数:发送信号的信号名
  3. 第三个参数:接收信号的对象
  4. 第四个参数:接收信号的槽名
  5. 第五个参数:连接类型(ConnectionType)

连接类型(ConnectionType)有以下几种取值:

  1. Qt::AutoConnection:自动连接(默认)。如果信号发射对象和槽的执行对象在同一个线程中,连接方式为直连;否则为队列方式。
  2. Qt::DirectConnection:直连。信号一旦发射,槽立即执行,并且槽是在信号发射的线程中执行的(同一线程是同步执行)。
  3. Qt::QueuedConnection:队列。信号发射后,当事件循环返回到接收线程时,槽函数就会执行。这种连接方式不是立即触发槽函数,而是要排队等待,并且是在槽函数的线程中执行(不同线程是异步执行)。
  4. Qt::BlockingQueuedConnection:阻塞队列。在槽函数返回之前,槽函数所在的线程都会被阻塞。
  5. Qt::UniqueConnection:唯一。和直连方式相同,但是只能一对一连接。

下面是一个示例,演示了connect函数的使用和不同连接类型的效果:

// 发送信号的类
class Sender : public QObject
{
    Q_OBJECT
signals:
    void mySignal();
};

// 接收信号的类
class Receiver : public QObject
{
    Q_OBJECT
public slots:
    void mySlot()
    {
        qDebug() << "Slot executed";
    }
};

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    Sender sender;
    Receiver receiver;

    // 使用不同的连接类型连接信号和槽
    QObject::connect(&sender, SIGNAL(mySignal()), &receiver, SLOT(mySlot()), Qt::AutoConnection);
    QObject::connect(&sender, SIGNAL(mySignal()), &receiver, SLOT(mySlot()), Qt::DirectConnection);
    QObject::connect(&sender, SIGNAL(mySignal()), &receiver, SLOT(mySlot()), Qt::QueuedConnection);
    QObject::connect(&sender, SIGNAL(mySignal()), &receiver, SLOT(mySlot()), Qt::BlockingQueuedConnection);
    QObject::connect(&sender, SIGNAL(mySignal()), &receiver, SLOT(mySlot()), Qt::UniqueConnection);

    // 发射信号
    emit sender.mySignal();

    return app.exec();
}

运行上述示例代码,可以看到不同连接类型的效果。请注意,示例代码是使用C++编写的,但在Qt的Python绑定中,connect函数的用法是相同的。

相关推荐

  1. Qtconnect函数使用

    2024-02-01 08:02:02       31 阅读
  2. Qt_Note16_QML_Connections

    2024-02-01 08:02:02       14 阅读
  3. Qt使用函数指针处理信号和槽函数重载

    2024-02-01 08:02:02       41 阅读
  4. PHP——函数使用

    2024-02-01 08:02:02       37 阅读
  5. 网络通讯基础(9):connect ()函数

    2024-02-01 08:02:02       41 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-01 08:02:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-01 08:02:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-01 08:02:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-01 08:02:02       20 阅读

热门阅读

  1. 原型和继承

    2024-02-01 08:02:02       33 阅读
  2. electron从入门到打包exe

    2024-02-01 08:02:02       44 阅读
  3. 本地部署whisper模型(语音转文字)

    2024-02-01 08:02:02       36 阅读
  4. SummaryWriter函数用法

    2024-02-01 08:02:02       31 阅读
  5. Spring中用到的设计模式

    2024-02-01 08:02:02       31 阅读
  6. 实用Python定时点击Chrome网页按钮

    2024-02-01 08:02:02       37 阅读
  7. Vue之前端Broadcast Channel API的简单使用

    2024-02-01 08:02:02       41 阅读
  8. Day05-Linux bash核心介绍及目录命令讲解

    2024-02-01 08:02:02       37 阅读