我有一个带有“Settings”按钮的表单(从QMainWindow继承),需要显示设置表单(从QWidget继承)。

按钮click()与某些设置连接ButtonClick()插槽

并在settingsButtonClick中:

void MainQT::settingsButtonClick()
{
    SettingsForm *settingsForm = new settingsForm();
    settingsForm->show();
}

它可以正常工作,但问题是我是否需要在某处删除此表单,或者在我关闭设置表单时将其删除?
我在这种情况下管理内存的正确方法是什么?我应该在MainForm的ctor中实例化隐藏的设置表单,仅在请求时显示吗?

最佳答案

我将通过以下方式进行操作:

void MainQT::settingsButtonClick()
{
    SettingsForm *settingsForm = new settingsForm();
    settingsForm->setAttribute( Qt::WA_DeleteOnClose );
    settingsForm->show();
}

使用Qt::WA_DeleteOnClose将确保关闭settingsForm后将其删除。
有关更多详细信息,请查看Qt documentation

09-26 10:54