美文网首页
Qt子窗体关闭时,不执行析构函数问题

Qt子窗体关闭时,不执行析构函数问题

作者: luckybabying | 来源:发表于2020-04-28 11:13 被阅读0次

子窗体的构造函数中初始化了父窗体的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();
              
            }
        }

    }
}

相关文章

  • Qt子窗体关闭时,不执行析构函数问题

    子窗体的构造函数中初始化了父窗体的parent,当关闭子窗体时不会调用析构函数, 只有关闭父窗体时,才会调用子窗体...

  • C++总结

    函数 为什么基类的析构函数用虚函数 在实现多态时,当用基类操作派用类,在析构时防止只析构基类而不析构派生类的状况发...

  • C++ 多态性 虚函数、抽象类(二)

    注意:本文中代码均使用 Qt 开发编译环境 在C++中不能声明虚构造函数,但是可以声明虚析构函数。析构函数没有类型...

  • C++析构函数

    析构函数 销毁对象时系统会自动调用一个函数来进行清理工作,例如释放分配的内存、关闭打开的文件等,这个函数就是析构函...

  • Day1:C++虚机制的实现

    1. 虚析构函数 话不多说,贴代码: 可以看到执行的结果是先调用了 的析构函数,再调用了 的析构函数; 如果将vi...

  • C#之析构函数

    定义: 析构函数,是类的一个特殊的成员函数,当类的对象超出范围时执行。简单来讲,析构函数,是用来帮助我们来进行废弃...

  • [C++之旅] 13 析构函数

    [C++之旅] 13 析构函数 析构函数与构造函数相反,构造函数在实例化一个对象时调用,而析构函数在销毁一个对象时...

  • 对象特性

    构造函数和析构函数 构造函数:创建对象时为对象的成员属性赋值 没有返回值也不写void 可以有参数,可以重载 析构...

  • C++之析构函数

    析构函数的概述 析构函数 完成对象的清理工作,先清理,再释放对象空间。析构函数也是编译器自动调用。 析构函数 不能...

  • Swift中的deinit方法

    deinit属于析构函数 析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的...

网友评论

      本文标题:Qt子窗体关闭时,不执行析构函数问题

      本文链接:https://www.haomeiwen.com/subject/rmqvwhtx.html