C++ 如何正确关闭QWebView而不导致内存泄漏?
我有一个自定义的C++ 如何正确关闭QWebView而不导致内存泄漏?,c++,windows,qt,memory-leaks,qwebview,C++,Windows,Qt,Memory Leaks,Qwebview,我有一个自定义的QWebView声明为: class browserControl : public QWebView { Q_OBJECT public: explicit browserControl(QWidget *parent = 0); ~browserControl(); // .... } 它是按下按钮时我调用的MainWindow类(与Qt在GUI应用程序上生成的类相同)的成员。因此,它在新窗口中打开web浏览器,但当我关闭主窗口
QWebView
声明为:
class browserControl : public QWebView {
Q_OBJECT
public:
explicit browserControl(QWidget *parent = 0);
~browserControl();
// ....
}
它是按下按钮时我调用的MainWindow
类(与Qt在GUI应用程序上生成的类相同)的成员。因此,它在新窗口中打开web浏览器,但当我关闭主窗口或web浏览器时,会出现大量内存泄漏(每次运行可能会有所不同,具体取决于打开的页面),比如(如果关闭主窗口,则关闭浏览器)
泄漏:24缓存源
泄漏:231 WebCoreNode
或者,如果关闭浏览器,则主窗口:
泄漏:1 XMLHttpRequest
泄漏:49缓存源
泄漏:2528 WebCoreNode
我该如何解决这个问题
编辑
所要求的构造函数代码:
browserControl::browserControl(QWidget *parent)
: QWebView(parent)
{
}
browserControl::~browserControl()
{
}
您有两个选择:
Qt::WA_DeleteOnClose
属性,这样,当您关闭小部件时,它将被删除,而不会等待应用程序关闭。执行此操作:widget->setAttribute(Qt::WA_DeleteOnClose)代码>
Qt::WA_DeleteOnClose
属性,这样,当您关闭小部件时,它将被删除,而不会等待应用程序关闭。执行此操作:widget->setAttribute(Qt::WA_DeleteOnClose)代码>
你能发布构造函数代码吗?你是如何构造这个对象的?@MehrdadMomeny:查看编辑。我输入了constructor代码。该对象是主窗口类(在GUI应用程序中由Qt生成的类)的成员。我没有设定一个家长。也许这就是原因?如果您没有设置父窗口,也没有手动删除小部件,您希望如何删除它?@MehrdadMomeny:当我将父窗口设置为主窗口时,浏览器将嵌入主窗口的窗体中,位于同一窗体中的选项卡控件顶部。我应该使用哪个父级,或者如何手动删除它?请检查我答案中的第二个选项,您不需要设置父级。您可以发布构造函数代码吗?你是如何构造这个对象的?@MehrdadMomeny:查看编辑。我输入了constructor代码。该对象是主窗口类(在GUI应用程序中由Qt生成的类)的成员。我没有设定一个家长。也许这就是原因?如果您没有设置父窗口,也没有手动删除小部件,您希望如何删除它?@MehrdadMomeny:当我将父窗口设置为主窗口时,浏览器将嵌入主窗口的窗体中,位于同一窗体中的选项卡控件顶部。我应该使用哪个父项,或者如何手动删除它?请选中我答案中的第二个选项,这样您就不需要设置父项。