QTextDocument:如何从缓存中删除资源

时间:2016-01-12 04:26:37

标签: c++ qt caching resources qtextdocument

我的程序正在使用几个不同的QTextBrowser来向用户显示内容。其中一些内容有图像。我从文件加载到QPixmap s并将它们添加到要显示的文本文档中。

假设代码如下:

QTextBrowser* browser = new QTextBrowser(this);
//Codes to add the browser to GUI
QPixmap pix;
pix.load(file_address);

browser->document()->addResource(QTextDocument::ImageResource, QUrl("url://Test1"), pix);
browser->setHtml( "<img src='url://Test1' width=120 height=90 />" );

稍后,我不再需要浏览器,所以删除它:

browser->deleteLater();

现在我的问题是:如何从缓存中删除添加到此已删除浏览器的资源?

QTextDocument的{​​{3}}提到:

  

void QTextDocument :: addResource(int type,const QUrl&amp; name,const   QVariant&amp; resource)将资源 resource 添加到资源缓存中,   使用类型和名称作为标识符。

因此,资源保留在缓存中,直到我关闭应用程序。但我需要事先清除它,因为有很多资源被添加到缓存中,并且应用程序可以连续运行几天。

1 个答案:

答案 0 :(得分:0)

缓存资源附加到QTextDocument::resource实例(不是全局缓存),并在文档被销毁或调用loadResource时释放。您可以在源代码中看到:

  • 1loadResource调用cachedResources来实际读取文件内容。
  • 2QTextDocument将资源内容存储在foreach($comment as $cmd) { $dids=$cmd['qid']; $json = json_encode($dids); } echo($json); 成员

由于这是与"1""2" 实例关联的私有类的成员,因此它具有相同的生命周期。