0
我們有一個應用程序與多個主題,其中調用其他次要應用程序。所以,在主應用程序有這樣的事情:QResource:unregister .rcc文件
// 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
爲什麼會發生?有解決方案嗎?
它可能是一個新手問題,但是,我怎麼知道一些QResource指向我正在註銷的內容?我採取的唯一行動是調用註冊和取消註冊。我沒有一個qResource對象,我只是調用靜態方法... –
通常我們可以知道庫是否可以返回引用計數....我會調查一下....請嘗試從你身邊.. – Naidu
https://code.woboq.org/qt5/qtbase/src/corelib/io/qresource.cpp.html ....你可以看到unregisterResource的實現。在上面的鏈接中搜索「QResource :: unregisterResource」 。他們使用「QDynamicFileResourceRoot」來了解更多的參考資料。我不認爲Qt公開這個級別的庫類。或者如果您非常需要它,您可以創建一個包裝類來註冊註銷並維護計數。 – Naidu