首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QResource:注销.rcc文件

QResource:注销.rcc文件
EN

Stack Overflow用户
提问于 2017-05-03 17:41:41
回答 1查看 414关注 0票数 0

我们有一个具有多个主题的应用程序,它称为其他次要应用程序。所以,在主应用程序上有这样的东西:

代码语言:javascript
复制
// User opens app with theme A
QResource::registerResource("theme_a.rcc");      // returns TRUE

// User changes theme to B
QResource::unregisterResource("theme_a.rcc");    // returns TRUE
QResource::registerResource("theme_b.rcc");      // returns TRUE

在主要应用程序上,一切都很好。当这个软件调用其他qt应用程序时,问题就开始了。

在这些次要的应用程序中,我们遵循相同的注册和注销流程。奇怪的是,注册总是有效的,而注销从来不起作用(只在未成年人应用程序中)。事情就这样发生了:

代码语言:javascript
复制
// User opens app with theme A
QResource::registerResource("minor_theme_a.rcc");      // returns TRUE

// User changes theme to B
QResource::unregisterResource("minor_theme_a.rcc");    // returns FALSE
QResource::registerResource("minor_theme_b.rcc");      // returns TRUE

为什么会这样?有解决办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-03 19:13:13

如果资源成功卸载,则unregisterResource返回true,不存在对资源的引用。

所以,在你的例子中,还有其他一些形式的引用。

关于unregisterResource的重要文档

如果有当前引用与未注册文件相关的资源的QResources,则它们将继续有效,但资源文件本身将从资源根中删除,因此无法创建指向该资源数据的进一步QResource。当指向它的最后一个QResource被销毁时,资源本身将被从内存中取消映射。

因此,我的猜测是,一些QResource仍然指向您试图取消注册的那个。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43766738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档