5

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の例では、作成したアクションは削除されないため、QMenu が QAction の所有権を取得すると仮定します。あれは正しいですか?

4

1 に答える 1

5

既存のアクションをQWidget(これQMenuは) に追加すると、次のようになります。

アクションの所有権は、この QWidget に転送されません。

あなたの例では、の削除は親として使用しているため、aによって処理されることに注意してください。したがって、のデストラクタで削除されます。MyClassQObjectaQObject

于 2012-01-05T23:57:45.570 に答える