2014-09-11 142 views
-3

我想在使用connect函數時使用Qt中的lambda表達式。
我的代碼是這樣的:在lambda表達式中使用Void表達式錯誤無效

for(int i = propertyToNodeMap.size() -1 ; i >= 0 ; --i) 
    { 
     connect(&mainDialog,mainDialog.accepted(),[=](){ 
       ; //sth .... 
     }); 
    } 

我使用Qt 5.3和MinGW爲編譯器在Windows 7
的錯誤信息是:

error: invalid use of void expression 
     }); 
     ^

而且我用Qt文檔和here作爲參考來實現這段代碼。 問候,

+0

在C++中沒有'foreach'。 – 2014-09-11 07:46:39

+0

@AntonSavin Qt創建者有這個選項,你可以使用它作爲容器,它是框架特性之一。看看http://qt-project.org/forums/viewthread/15487 – bahrami307 2014-09-11 07:48:52

+0

@AntonSavin http://qt-project.org/doc/qt-4.8/containers.html – bahrami307 2014-09-11 07:57:24

回答

-1

的問題既不是涉及到lambda表達式,也foreach語句(一個誰最後一版之前評論的問題,現在刪除)或'某事」的一部分。
連接的正確形式是這樣的:

connect(&mainDialog,&mainDialog.accepted(),[=](){ // missing '&' 
       ; //sth .... 
     }); 
0

connect需要一個指向成員函數:

connect(&mainDialog, &DialogClass::accepted, [=](){ 
    ; //sth .... 
}); 

我假定DialogClass是其中mainDialog是一個實例的類。

+0

我認爲第二個不起作用。因爲'SIGNAL(...)'將'...'轉換爲'const char *'我想。 – bahrami307 2014-09-17 13:10:23

+0

是的,'SIGNAL'版本不允許連接到lambda,謝謝你的更正。 – Oktalist 2014-09-17 14:36:08