QAction的所有权

时间:2012-01-05 22:36:52

标签: qt qmenu ownership-semantics

将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());
}

Qt Menus example不删除它创建的任何操作,因此我假设QMenu获得了QAction的所有权。这是对的吗?

1 个答案:

答案 0 :(得分:5)

如果您将预先存在的操作添加到QWidgetQMenu是),那么:

  

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

请注意,在您的示例中,删除aMyClass处理,因为您已将其用作父QObject,因此在{{1}中删除了a析构函数。