gpt4 book ai didi

c++ - QResource:注销 .rcc 文件

转载 作者:行者123 更新时间:2023-11-28 05:09:46 29 4
gpt4 key购买 nike

我们有一个有多个主题的应用程序,它调用了其他小应用程序。所以,在主应用程序上有类似的东西:

// 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 应用程序时,问题就开始了。

在这些小应用程序中,我们遵循相同的注册和注销流程。奇怪的是,注册总是有效,而注销永远无效(仅在未成年人应用程序中)。它正在发生这样的事情:

// 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

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

最佳答案

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

因此,在您的情况下,可能还有来自其他一些表格的更多引用。

关于 unregisterResource 的重要文档:

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

所以我强烈猜测一些 QResource 仍然指向您试图注销的那一个。

关于c++ - QResource:注销 .rcc 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43766738/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com