找不到QtResource文件中的文件

时间:2018-11-01 12:31:21

标签: c++ qt

我在Qt资源文件中有几个XML文件。一切都在Linux上运行良好。但是在Windows上,在运行时,似乎资源文件中根本没有任何内容。 qrc cpp文件已构建,并且足够大,因此我想我想要的所有文件都已构建到其中。

我最初是在Linux上使用Qt Creator创建的Resource文件。在Windows上使用Qt Creator,我可以从资源文件中打开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 :(得分:0)

问题在于问题出在我的应用程序中,正在链接到exe的lib中读取资源文件。因此,使其工作的方法是在main()中调用Q_INIT_RESOURCE(myResourceFile)