c++ - 如何在不存储连接的情况下断开 lambda 函数

标签 c++ qt c++11 lambda

<分区>

有没有办法在不存储连接对象的情况下断开对 lambda 函数的 Qt 连接?

我知道如果我存储从 connect 函数返回的 QMetaObject::Connection 是可能的,但我真的不想这样做,因为它们会很多。我主要连接到 lambda 函数以避免创建一堆一次性方法和对象,而且如果我需要做所有的簿记工作,SLOT 似乎会更可取。

最佳答案

假设有一个连接:

QObject::connect(senderInstance, &Sender::mySignal, this, []() {
    // implement slot as a lambda
});

然后您可以通过以下方式轻松断开连接:

QObject::disconnect(senderInstance, &Sender::mySignal, this, nullptr);

这将断开所有 this'sSender::mySignal 的插槽;然而,只有一个这样的槽是很常见的,所以最终的结果是断开连接很简单,没有副作用。

关于c++ - 如何在不存储连接的情况下断开 lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26553029/

相关文章:

c++ - 使用 XPath 在 QDomDocument 中搜索节点

python - PyQt:如何在选择项目时保持 ComboBox 打开

c++ - 错误 C2280 : attempting to reference a deleted function while declaring a C++ struct

c++ - 如何迭代通用 vector

c++ - 如何检测类型是否可以流式传输到 std::ostream?

c++ - 计算鼠标点击次数 C

c++ - 如何将 Tesseract 链接到 VS 2019 中的 C++ 项目?

Qt自动软件版本?

c++ - 如何将变量从 .sh 脚本传递给 qmake?

c++ - 在 C++ 中使用 protobuf 对象的 protobuf 映射