Qt Slots e C ++ 11 lambda

Eu tenho um item QAction que eu inicializo como segue:

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

E então onSomeAction parece algo como:

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

    // do some stuff with caller
}

Isso funciona bem, eu recebo ocaller objeto de volta e eu sou capaz de usá-lo como esperado. Então eu tento o caminho do C ++ 11 para conectar o objeto da seguinte forma:

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

    // do some stuff with caller
});

Mascaller é sempre nulo e, portanto, oQ_ASSERT gatilhos. Como posso usar lambdas para obter o remetente?

questionAnswers(2)

yourAnswerToTheQuestion