c++ - 无法正确调用 `connect`

标签 c++ qt lambda

我正在学习 C++ Qt。现在尝试将 lambda 函数与 connect 一起使用:

connect(ui->sbNormal, &QSpinBox::valueChanged, [=] (int x) {});

输出错误:

error: no matching function for call to 'MainWindow::connect(QSpinBox*&, < unresolved overloaded function type>, MainWindow::MainWindow(QWidget*)::< lambda(int)>)'});

我做错了什么?如何指定需要的重载?

最佳答案

如果有多个重载,您必须手动指定您想要的重载:

connect(ui->sbNormal, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged),
        [=] (int x) {});

关于c++ - 无法正确调用 `connect`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36269842/

相关文章:

lambda - 使用 lambda 表达式的后缀与前缀递增

c++ - 使用 Boost 类型特征进行条件编译

c++ - C++ : Compile Error: expected initializer before ‘<’ token

c# - .NET 进程到 Borland C++ 进程通信

linux - 在 Linux 中对 '(QPalette)()' Qt4 的调用不匹配

linux - QUdpSocket 读取 - 使用 tcpdump 观察到偶尔丢失数据报

c# - 如何使用 LINQ 返回不同的记录

c++ - Boost Spirit 和 Boost Phoenix 问题

c++ - 如何启动文件/目录/URL 的关联应用程序?

generics - 在 kotlin 的 lambda 中使用多种泛型类型