Слоты 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
триггеры. Как я могу использовать лямбды, чтобы получить отправителя?