QAction 的所有权
将 QAction* 添加到 QMenu 时,谁负责删除 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 的所有权。这是正确的吗?
When adding a QAction* to a QMenu who is responsible for deleting the QAction* object? I couldn't find it mentioned in the documentation for QMenu or 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());
}
The Qt Menus example doesn't delete any of the actions it creates so I assume that QMenu takes ownership of the QAction. Is that correct?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果将预先存在的操作添加到
QWidget
(即QMenu
),则:请注意,在您的示例中,
a
的删除由MyClass
处理,因为您已将其用作父QObject
,因此a< /code> 在
QObject
的析构函数中被删除。If you add a pre-existing action to a
QWidget
(whichQMenu
is) then:Note that in your example, deletion of
a
is handled byMyClass
because you have used it as a parentQObject
, soa
is deleted inQObject
's destructor.