QAction的所有权

gle*_*nnr 5 qt ownership-semantics qmenu

将QAction*添加到负责删除QAction*对象的QMenu时?我在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());
}
Run Code Online (Sandbox Code Playgroud)

Qt的菜单例如不会删除任何它创建的行动,所以我认为QMenu采取的QAction的所有权.那是对的吗?

cma*_*t85 5

如果您将预先存在的操作添加到QWidget(即QMenu),则:

操作的所有权不会转移到此QWidget.

请注意,在您的示例中,删除aMyClass由于您已将其用作父级QObject,因此aQObject析构函数中将其删除.