5
向负责删除QAction *对象的QMenu添加QAction *时?我无法在QMenu或QAction的文档中找到它。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的所有权。那是对的吗?
谢谢。你的回答在“a”的销毁方面含糊不清。 QObject会为我做,还是必须在MyClass的某个地方显式执行? – glennr 2012-01-06 00:22:00
每个QObject都维护一个QObject对象的列表,当QObject被销毁时,'children'也被删除。所以不,除了将你的QObject传递给QObject派生对象的父arg外,你不需要任何东西。阅读关于QObject的文档,它会比那个努力更好地解释它... – cmannett85 2012-01-06 00:27:02