将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的所有权。这是对的吗?
答案 0 :(得分:5)
如果您将预先存在的操作添加到QWidget
(QMenu
是),那么:
操作的所有权不会转移到此QWidget。
请注意,在您的示例中,删除a
由MyClass
处理,因为您已将其用作父QObject
,因此在{{1}中删除了a
析构函数。