Слоты Qt и лямбда C ++ 11

У меня есть элемент QAction, который я инициализирую следующим образом:

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

И тогда OnSomeAction выглядит примерно так:

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

    // do some stuff with caller
}

Это прекрасно работает, я получаюcaller Возвратитесь, и я могу использовать его, как и ожидалось. Затем я пытаюсь подключить объект C ++ 11 следующим образом:

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

    // do some stuff with caller
});

Ноcaller всегда нулевой и, следовательно,Q_ASSERT триггеры. Как я могу использовать лямбды, чтобы получить отправителя?

Ответы на вопрос(2)

Ваш ответ на вопрос