gpt4 book ai didi

qt - QAction 的所有权

转载 作者:行者123 更新时间:2023-12-03 03:45:46 29 4
gpt4 key购买 nike

将 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 Menus example不会删除它创建的任何操作,因此我假设 QMenu 拥有 QAction 的所有权。这是正确的吗?

最佳答案

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

The ownership of action is not transferred to this QWidget.

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

关于qt - QAction 的所有权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8750878/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com