2016-03-28 11 views
1

Çalışıyorum C++ Qt. Ve şimdi connect ile lambda fonksiyonu kullanmayı deneyin:'connect' doğru çağrılamıyor

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

Bu çıkış hatası: Yanlış yapacağım ne

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

? Gerekli aşırı yükleme nasıl belirlenir? Birden fazla yüke vardır durumda

+0

aramak çalıştığınız fonksiyonun imza nedir? Bir fonksiyon işaretçisi almayı tahmin ederdim? – NathanOliver

+0

'void valueChanged (int)' ve 'void valueChanged (const QString &)'. İlk önce ihtiyacım olan –

+0

"Bağlan" işlevini kastediyorum – NathanOliver

cevap

4

sahipseniz el istediğiniz hangisini belirtmek zorunda:

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

Teşekkür ederim! Ben de onu buldum) Sadece C++ işlevini yapabileceğini bilmiyordum. –

+1

Korkunç sözdizimi gerçekten, ama ne yapabilirsin ... – dtech

+0

Çalıştığı ana şey) –