Conecte la señal QML a la ranura lambda C ++ 11 (Qt 5)

Conectar una señal QML a una ranura normal de C ++ es fácil:

// QML
Rectangle { signal foo(); }

// C++ old-style
QObject::connect(some_qml_container, SIGNAL(foo()), some_qobject, SLOT(fooSlot()); // works!

Sin embargo, no importa lo que intente, parece que no puedo conectarme a una ranura lambda de la función C ++ 11.

// C++11
QObject::connect(some_qml_container, SIGNAL(foo()), [=]() { /* response */ }); // fails...
QObject::connect(some_qml_container, "foo()", [=]() { /* response */ }); // fails...

Ambos intentos fallan con un error de firma de función (ninguna sobrecarga de QObject :: connect puede aceptar estos parámetros). Sin embargo, la documentación de Qt 5 implica que esto debería ser posible.

Desafortunadamente, los ejemplos de Qt 5 siempre conectan una señal de C ++ a una ranura lambda de C ++:

// C++11
QObject::connect(some_qml_container, &QMLContainer::foo, [=]() { /* response */ }); // works!

Esta sintaxis no puede funcionar para una señal QML, ya que la firma QMLContainer :: foo no se conoce en tiempo de compilación (y declarar QMLContainer :: foo a mano anula el propósito de usar QML en primer lugar).

¿Es lo que estoy tratando de hacer posible? Si es así, ¿cuál es la sintaxis correcta para la llamada QObject :: connect?

Respuestas a la pregunta(3)

Su respuesta a la pregunta