файлы в файлах QtResource не найдены - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть несколько файлов XML в файле Qt Resource. Все отлично работает на Linux. Но в Windows, во время выполнения, кажется, что в файле Resource вообще ничего нет. Файл qrc cpp собран и достаточно большой, поэтому я предполагаю, что все файлы, которые я хочу, были встроены в него.

Первоначально я создал файл Resource, используя Qt Creator в Linux. Используя Qt Creator в Windows, я могу открыть файлы XML из файла ресурсов.

Я использую эту строку для доступа к ним:

QDirIterator it( ":", QStringList() << "*.xml", QDir::Files );

В целях тестирования я попробовал это:

QDir qDir( ":" );
QStringList listFiles = qDir.entryList();

и перебирал listFiles, но у него были только некоторые файлы, которые я где-то читал, были общими вещами, которые всегда были там.

Я определенно не эксперт Qt, и это моя первая попытка использовать файлы Qt Resource. Почему это работает на Linux, а не на Windows?

Вот QRC:

<RCC>
    <qresource prefix="/">
        <file>OMSClient____ActionDefinitions.xml</file>
        <file>OMSClient____ADGroupDefinitions.xml</file>
        <file>OMSClient____AdminConfiguration.xml</file>
        <file>OMSClient____AlertSetup.xml</file>
        <file>OMSClient____ClientConfigTooltips.xml</file>
        <file>OMSClient____ClientConfiguration.xml</file>
        <file>OMSClient____DALDBEditorConfiguration.xml</file>
        <file>OMSClient____DALDBEditorStartup.xml</file>
        <file>OMSClient____DBEditorConfiguration.xml</file>
        <file>OMSClient____DefaultViewSetup.xml</file>
        <file>OMSClient____GlobalSetup.xml</file>
        <file>OMSClient____HtmlFiles.xml</file>
        <file>OMSClient____Icons.xml</file>
        <file>OMSClient____MaintenanceModule.xml</file>
        <file>OMSClient____MenuTree.xml</file>
        <file>OMSClient____Modules.xml</file>
        <file>OMSClient____PermissionDefinitions.xml</file>
        <file>OMSClient____Pixmaps.xml</file>
        <file>OMSClient____ReportConfigurationSyntax.xml</file>
        <file>OMSClient____SpareAircraftModule.xml</file>
        <file>OMSClient____SSIDBEditorStartup.xml</file>
        <file>OMSClient____SystemConfiguration.xml</file>
        <file>OMSClient_Guest_Guest__MenuTree.xml</file>
    </qresource>
</RCC>

Я написал этот же вопрос на форуме Qt. Кто-то попросил меня создать тестовую программу, показывающую проблему. Естественно, тестовая программа работает правильно.

1 Ответ

0 голосов
/ 02 ноября 2018

Проблема заключалась в том, что в моем приложении, где проблема была, файл ресурсов читается в библиотеке, которая связана с exe. Таким образом, способ заставить это работать в main () сделать вызов Q_INIT_RESOURCE(myResourceFile).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...