2016-03-28 17 views
1

私はstudy C++ Qtです。そして今connectをラムダ関数を使用しよう:`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)>)'});

私が間違って何をするのですか?必要なオーバーロードを指定する方法

+0

お電話しようとしている関数のシグネチャは何ですか?関数ポインタが必要だと思いますか? – NathanOliver

+0

'void valueChanged(int)'と 'void valueChanged(const QString&)'です。私は最初に呼び出す必要があります –

+0

私は 'connect'関数を意味しました – NathanOliver

答えて

4

場合は、複数のオーバーロードがあり、あなたが手動たいかを指定する必要があります。

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

ありがとう!私もそれを見つけた)ちょうど私はC++が関数をキャストできることを知らなかった。 –

+1

本当にひどい構文ですが、何ができますか... – dtech

+0

主なことは動作します) –

関連する問題