gpt4 book ai didi

c++ - 在 Qt5.5 中,我还需要断开 lambda 与信号的连接吗?

转载 作者:可可西里 更新时间:2023-11-01 17:36:49 26 4
gpt4 key购买 nike

在早期的 Qt 5 版本中,我必须断开 lambda 与信号的连接,如下所示:“Disconnecting lambda functions in Qt5”。

Here我发现了以下声明:当“receiver”被销毁时不会自动断开连接,因为它是一个没有 QObject 的仿函数。然而,从 5.2 开始有一个重载,它添加了一个“上下文对象”。当该对象被销毁时,连接就会断开(上下文也用于线程关联:lambda 将在用作上下文的对象的事件循环的线程中调用)。

  • 这是否意味着我不再需要断开 lambda 与 Qt5.2 或更高版本的连接?
  • 我必须传递该上下文还是自动完成?

最佳答案

当一个对象通过 QObject::~QObject() 销毁时,Qt 会自动删除与该对象的所有连接。 .因此,如果您创建到 lambda 的连接,当发送对象被删除时,连接会自动清除。您没有,以前也不需要自己断开连接。

当您需要对连接的生命周期进行更细粒度的控制时,将使用您所指的上下文对象。当您希望在销毁另一个对象(上下文对象)时删除连接时使用此方法。如果您需要在发送方被销毁之前移除连接,这使得移除连接变得更容易。

总结:您不需要手动断开 lambda 的连接,它们会自动清理。您可以使用上下文对象在发送者对象被销毁之前删除连接。

关于c++ - 在 Qt5.5 中,我还需要断开 lambda 与信号的连接吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33357410/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com