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?