【问题标题】:Cannot call `connect` correctly无法正确调用`connect`
【发布时间】:2016-03-28 19:42:36
【问题描述】:

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

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

输出错误:

错误:没有匹配的函数调用'MainWindow::connect(QSpinBox*&, , MainWindow::MainWindow(QWidget*)::)'});

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

【问题讨论】:

  • 你试图调用的函数的签名是什么?我猜它需要一个函数指针?
  • void valueChanged(int)void valueChanged(const QString &)。我需要先打电话
  • 我的意思是connect函数
  • 我不知道...它有很多重载。但是这个变体有效:connect(sender, &Sender::valueChanged, [=](const QString &newValue) { receiver->updateValue("senderValue", newValue); } );我从 Qt 文档中得到它。

标签: c++ qt lambda


【解决方案1】:

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

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

【讨论】:

  • 谢谢!我也找到了)只是我不知道C++可以转换函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多