gpt4 book ai didi

c++ - Qt Parent 在 child 关闭后删除变量

转载 作者:行者123 更新时间:2023-11-30 01:41:58 28 4
gpt4 key购买 nike

我正在使用 Qt 库用 C++ 编写应用程序。有一个中央窗口(父窗口),所有子窗口都在需要时启动。由于这些窗口中有许多可以打开多次,但显示不同的数据,因此我使用 new 声明对象。这是我得到的示例:

Home_Window.hpp

View_Window *SomeWindow;

Home_Window.cpp

void Home_Window::on_WindowButton_clicked()
{
SomeWindow = new View_Window();
SomeWindow->show();
}

我想做的是在窗口关闭时删除对象,以减少应用程序的内存占用。我已经能够删除子窗口中包含的所有对象以减少内存使用,但核心对象仍然存在,如果在一天内用户打开和关闭 1000 个窗口,并且每个对象都保留40-50KB 内存,应用程序占用的内存从几 MB 到 100 MB 不等。

我无法在网上找到可以让我实现这一目标的指南。我正在考虑一个插槽和信号对,因为我知道当一个窗口关闭时,它会发送 QObject::destroyed() 信号。唯一的问题是,我没有尝试设置这样的信号槽对。

如有任何建议,我们将不胜感激。

最佳答案

当窗口为closed时删除窗口, 您可以设置 WA_DeleteOnClose它的属性。您的 on_WindowButton_clicked() 应该类似于:

void Home_Window::on_WindowButton_clicked()
{
View_Window* w= new View_Window();
w->setAttribute(WA_DeleteOnClose);
w->show();
}

这样,你就不用担心自己销毁w,它会在关闭时自动被deleted。

关于c++ - Qt Parent 在 child 关闭后删除变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40444893/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com