2016-03-28 77 views
1

我在研究C++ Qt。而現在嘗試使用lambda函數與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

我的意思是「連接」功能 – NathanOliver

回答

4

的情況下有多個重載,你必須指定想手動其中之一:

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

謝謝!我也發現它)只是我不知道C++可以投射功能。 –

+1

可怕的語法真的,但你可以做什麼... – dtech

+0

它的主要作品) –