Qt子窗体关闭时,不执行析构函数问题
2020-04-28 本文已影响0人
luckybabying
子窗体的构造函数中初始化了父窗体的parent,当关闭子窗体时不会调用析构函数,
只有关闭父窗体时,才会调用子窗体的析构函数,
解决办法如下:
//setAttribute(Qt::WA_DeleteOnClose);
setAttribute(Qt::WA_DeleteOnClose);
写在子窗体的构造函数就可以了~
示例:
//setAttribute(Qt::WA_DeleteOnClose);
void MainWindow::SimulationAction_slot()
{
QTreeWidgetItem * currItem = ui->projectTreeWidget->currentItem();
if(currItem)
{
DataSimulation* m_datasimulation = new DataSimulation;
QString name = currItem->text(0);
QString filename =open_dir+"/"+m_cont[name].drive_path+"/"+m_cont[name].drive_path1;
m_datasimulation->setAttribute(Qt::WA_DeleteOnClose);
bool is_map = filename.contains("map.xml",Qt::CaseSensitive);//成功返回true 第二个参数表示是否大小写敏感
if(is_map)
{
if(m_datasimulation->readXml(filename))
{
m_datasimulation->treeWidgetExpandAll();
m_datasimulation->show();
}
}
}
}