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(whichQMenuis) then:Note that in your example, deletion of
ais handled byMyClassbecause you have used it as a parentQObject, soais deleted inQObject‘s destructor.