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();
              
            }
        }

    }
}
上一篇 下一篇

猜你喜欢

热点阅读