在lambda表达式中使用Void表达式错误无效
我想在使用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作为参考来实现这段代码。 问候,
的问题既不是涉及到lambda表达式,也foreach
语句(一个谁最后一版之前评论的问题,现在删除)或'某事”的一部分。
连接的正确形式是这样的:
connect(&mainDialog,&mainDialog.accepted(),[=](){ // missing '&'
; //sth ....
});
connect
需要一个指向成员函数:
connect(&mainDialog, &DialogClass::accepted, [=](){
; //sth ....
});
我假定DialogClass
是其中mainDialog
是一个实例的类。
我认为第二个不起作用。因为'SIGNAL(...)'将'...'转换为'const char *'我想。 – bahrami307 2014-09-17 13:10:23
是的,'SIGNAL'版本不允许连接到lambda,谢谢你的更正。 – Oktalist 2014-09-17 14:36:08
在C++中没有'foreach'。 – 2014-09-11 07:46:39
@AntonSavin Qt创建者有这个选项,你可以使用它作为容器,它是框架特性之一。看看http://qt-project.org/forums/viewthread/15487 – bahrami307 2014-09-11 07:48:52
@AntonSavin http://qt-project.org/doc/qt-4.8/containers.html – bahrami307 2014-09-11 07:57:24