Quantcast
Channel: Qt Slots and C++11 lambda - Stack Overflow
Viewing all articles
Browse latest Browse all 4

Qt Slots and C++11 lambda

$
0
0

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?


Viewing all articles
Browse latest Browse all 4

Latest Images

Trending Articles





Latest Images