Qt Slots y C ++ 11 lambda

Tengo un elemento de QAction que inicializo como sigue:

QAction* action = foo->addAction(tr("Some Action"));
connect(action, SIGNAL(triggered()), this, SLOT(onSomeAction()));

Y luego onSomeAction se ve algo así como:

void MyClass::onSomeAction()
{
    QAction* caller = qobject_cast<QAction*>(sender());
    Q_ASSERT(caller != nullptr);

    // do some stuff with caller
}

Esto funciona bien, me sale elcaller objetar de nuevo y soy capaz de usarlo como se esperaba. Luego intento la forma en C ++ 11 de conectar el objeto como tal:

connect(action, &QAction::triggered, [this]()
{
    QAction* caller = qobject_cast<QAction*>(sender());
    Q_ASSERT(caller != nullptr);

    // do some stuff with caller
});

Perocaller Siempre es nulo y por lo tanto elQ_ASSERT gatillos ¿Cómo puedo usar lambdas para obtener el remitente?

Respuestas a la pregunta(2)

Su respuesta a la pregunta