向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
,所以a
在QObject
的析构函数中被删除。