QAction的所有权



向QMenu添加QAction*时,谁负责删除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菜单示例不会删除它创建的任何操作,所以我假设QMenu拥有QAction的所有权。这是正确的吗?

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

诉讼的所有权不转移给本QWidget。

请注意,在您的示例中,a的删除由MyClass处理,因为您已将其用作父QObject,所以aQObject的析构函数中被删除。

相关内容

  • 没有找到相关文章

最新更新