When adding a QAction* to a QMenu who is responsible for deleting the QAction* object? I couldn't find it mentioned in the documentation for QMenu or QAction.
void MyClass::contextMenuEvent(QContextMenuEvent *evt)
{
QMenu menu(this);
QAction *a = new QAction(tr("Some action"), this);
menu.addAction(a); // who owns a?
menu.exec(evt->globalPos());
}
The Qt Menus example doesn't delete any of the actions it creates so I assume that QMenu takes ownership of the QAction. Is that correct?
If you add a pre-existing action to a QWidget
(which QMenu
is) then:
The ownership of action is not transferred to this QWidget.
Note that in your example, deletion of a
is handled by MyClass
because you have used it as a parent QObject
, so a
is deleted in QObject
's destructor.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With