gpt4 book ai didi

c++ - MOC 一个 lambda 连接

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:42:27 25 4
gpt4 key购买 nike

我想像这样创建一个连接:

connect(myMap[myObjectName], &myObject::valueChanged, [&] (int value)
{
QString objectName = sender()->objectName();
myOtherMap[objectName].setValue(QVariant(value));
});

但这不起作用,因为如果函数不通过 MOC 就无法调用 sender()。因此,使这项工作(表面上)的唯一方法是使用旧的基于信号/槽字符串的语法。

但是,像 this Qt blog 这样的东西使 Qt5 函数指针语法看起来应该比以前的字符串语法更受欢迎,所以我很好奇:是否有某种方法可以 MOC lamda 函数,或者是否存在一整类新语法不能的情况被使用?

最佳答案

使用this(或任何其他QObject)作为接收器来使sender()方法工作:

connect(myMap[myObjectName], &myObject::valueChanged, this, [&] (int value)
{
QString objectName = sender()->objectName();
myOtherMap[objectName].setValue(QVariant(value));
});

或者看看QSignalMapper .它看起来很适合您的场景。

关于c++ - MOC 一个 lambda 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26517492/

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