우리는 다른 테마를 가진 응용 프로그램을 가지고 있습니다. 따라서 메인 앱에는 다음과 같은 것이 있습니다 :QResource : .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