我将自定义QWebView
声明为:
class browserControl : public QWebView {
Q_OBJECT
public:
explicit browserControl(QWidget *parent = 0);
~browserControl();
// ....
}
它是MainWindow
类的成员(由Qt在GUI应用程序上生成的同一个)当按下按钮时,我调用show()。所以它在一个新窗口中打开Web浏览器但是当我关闭主窗口我们的Web浏览器时,我得到了一堆内存泄漏(它可能因每次运行而异,具体取决于打开的页面,我猜)喜欢(如果我关闭主窗口然后浏览器)
LEAK:24 CachedResource
LEAK:231 WebCoreNode
或者如果我关闭浏览器然后关闭主窗口:
LEAK:1 XMLHttpRequest
LEAK:49 CachedResource
LEAK:2528 WebCoreNode
我该如何解决这个问题?
修改
要求的构造函数代码:
browserControl::browserControl(QWidget *parent)
: QWebView(parent)
{
}
browserControl::~browserControl()
{
}
答案 0 :(得分:2)
您有两种选择:
您可以将父QObject(直接或间接是QApplication对象的子项)传递给窗口小部件的构造函数。由于qobject的析构函数会删除它的子节点,因此最终会删除您的小部件。
第二个选项是您在窗口小部件上设置Qt::WA_DeleteOnClose
属性,这样当关闭窗口小部件时它将被删除,并且不会等待应用程序关闭。这样做:widget->setAttribute(Qt::WA_DeleteOnClose);