【问题标题】:Will QWizard delete QWizardPage or will it leak?QWizard 会删除 QWizardPage 还是会泄漏?
【发布时间】:2013-09-05 16:15:07
【问题描述】:

如果我有QWizard,并且我在没有指定父级的情况下实例化它,它会在超出范围时删除它的页面还是会泄漏?

{
WelcomeWizard wiz;
wiz.addPage(new QWizardPage);
}

我认为QWizard 会删除它们,但我非常感谢任何更详细的解释。

【问题讨论】:

  • 当父级(WelcomeWizard)被删除时将其删除。
  • 即使我没有明确指定父级?

标签: c++ qt memory-management memory-leaks


【解决方案1】:

QWizard::addPage 内部调用setPage,它调用page->setParent(...) 作为首先完成的事情之一。

所以是的,向导确实拥有页面的所有权,并且它们将受到正常的QObject 生命周期的约束。删除向导将删除所有页面。

【讨论】:

    【解决方案2】:

    是的,当父级正在删除时,Qt 会自动删除一个小部件的子级

    【讨论】:

    • 非常感谢,但是这很清楚,问题是如果我有 QWizard,我在没有指定父级的情况下实例化它