5

将 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 示例不会删除它创建的任何操作,因此我假设 QMenu 拥有 QAction 。那是对的吗?

4

1 回答 1

5

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

操作的所有权不会转移到这个 QWidget。

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

于 2012-01-05T23:57:45.570 回答