我有一个 Qt 应用程序,用于QPointers
显示新的 UI 对话框(小部件)。主应用程序可以有许多加载不同数据的相同小部件。我遇到的问题是删除和释放每个小部件的内存。如果我监视程序的 RAM 使用情况,每次单击按钮打开这些新小部件之一时,它都会增加 ram,而当我关闭小部件时,它似乎并没有释放 ram。我尝试过使用deleteLater
和其他解决方案,但程序中不断出现崩溃。
一些示例代码在这里:
QPointer<ListReservations> listResWindow = new ListReservations(resID);
listResWindow->setNum(numpeople);
listResWindow->show();
这将调用ListReservations
声明为QDialog
(非模态)的“”小部件。在那个对话框中,我有一个按钮来关闭调用QWidget::close()
插槽的窗口。
我想问题是我的主程序(具有QPointer
)如何知道对话框何时关闭然后释放对话框并(如果可能)删除指针以节省更多内存......
我认为您可能可以QConnect()
对QPointer
对象执行操作,但我似乎找不到任何允许指针传递的信号或插槽,更不用说在对话框确实关闭并准备好删除时发送信号了。
也许我需要在主程序中使用某种函数,它需要一个通用指针对象,然后QDialog
在调用它自己的关闭槽之前调用它?在那个函数中,它会通过自身被销毁吗?只是抛出我试图实施但失败的想法......
我认为我不能在其他地方重用相同的指针,因为理论上你可以ListReservations
同时打开多个窗口。