QTextDocument:如何从缓存中删除资源
QTextDocument: How to remove a resource from cache
我的程序使用几个不同的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
的文件提到:
void QTextDocument::addResource(int类型,const QUrl&name,constQVariant&resource)将resourceresource添加到资源缓存中,使用类型和名称作为标识符。
因此,在我关闭应用程序之前,资源一直保留在缓存中。但我需要事先清除它,因为缓存中添加了大量资源,而且应用程序可能会连续运行几天。
缓存的资源附加到QTextDocument
实例(而不是全局缓存),并且在文档被销毁或调用QTextDocument::clear()
时将被释放。你可以在源代码中看到:
- 1:
QTextDocument::resource
调用loadResource
实际读取文件内容 - 2:
loadResource
将资源内容存储在cachedResources
成员中
由于这是与QTextDocument
实例关联的私有类的成员,因此它将具有相同的生存期。
相关文章:
- 具有瞬态资源的RAII类
- 将数组的地址分配给变量并删除
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- C/C++编译器通常会删除重复的库吗
- 从链接列表c++中删除一个项目
- C++如何通过用户输入删除列表元素
- 这是系统资源吗?(或者我怎么知道我是否需要删除指针) - 在 C++ 中使用 C
- 析构函数提供删除资源的"may be used uninitialized"
- 类的静态实例无法在程序退出时正确处理资源删除
- 如何从 OpenGL 程序中删除未使用的资源
- 删除菜单项后,如何在视觉工作室中删除资源符号,当它说"in use"?
- QTextDocument:如何从缓存中删除资源
- 删除运算符导致资源泄漏
- 停止QThread工作进程处理即将删除的资源的正确方法是什么
- 如何在Windows资源管理器中获得由_rmdir删除的目录以立即更新
- unique_ptr没有在编译器资源管理器中生成删除指令
- 为什么使用复制-分配操作符时需要删除资源?
- 如何确保给定的资源总是首先被删除
- 在visualc++中删除位图资源
- 在MFC项目中有删除冗余资源的工具吗?