Право собственности на QAction

При добавлении QAction* в QMenu, кто отвечает за удаление объекта QAction*? Я не смог найти это упомянутое в документации для QMenu или 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());
}

Пример Qt Menus не удаляет ни одно из создаваемых им действий, поэтому я предполагаю, что QMenu становится владельцем QAction. Это верно?

1 ответ

Решение

Если вы добавите ранее существующее действие к QWidget (который QMenu затем:

Право собственности на действие не передается этому QWidget.

Обратите внимание, что в вашем примере удаление a обрабатывается MyClass потому что вы использовали его в качестве родителя QObject, так a удаляется в QObjectдеструктор.

Другие вопросы по тегам