<分区>
有没有办法在不存储连接对象的情况下断开对 lambda 函数的 Qt
连接?
我知道如果我存储从 connect 函数返回的 QMetaObject::Connection
是可能的,但我真的不想这样做,因为它们会很多。我主要连接到 lambda 函数以避免创建一堆一次性方法和对象,而且如果我需要做所有的簿记工作,SLOT
似乎会更可取。
<分区>
有没有办法在不存储连接对象的情况下断开对 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's
Sender::mySignal
的插槽;然而,只有一个这样的槽是很常见的,所以最终的结果是断开连接很简单,没有副作用。
关于c++ - 如何在不存储连接的情况下断开 lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26553029/