I have a QAction item that I initialize like follows:
QAction* action = foo->addAction(tr("Some Action"));connect(action, SIGNAL(triggered()), this, SLOT(onSomeAction()));
And then onSomeAction looks something like:
void MyClass::onSomeAction(){ QAction* caller = qobject_cast<QAction*>(sender()); Q_ASSERT(caller != nullptr); // do some stuff with caller}
This works fine, I get the caller
object back and I'm able to use it as expected. Then I try the C++11 way to connect the object like such:
connect(action, &QAction::triggered, [this](){ QAction* caller = qobject_cast<QAction*>(sender()); Q_ASSERT(caller != nullptr); // do some stuff with caller});
But caller
is always null and thus the Q_ASSERT
triggers. How can I use lambdas to get the sender?