我在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论坛上发布了相同的问题。那里有人要求我创建一个显示问题的测试程序。因此,测试程序自然可以正常工作。
答案 0 :(得分:0)
问题在于问题出在我的应用程序中,正在链接到exe的lib中读取资源文件。因此,使其工作的方法是在main()中调用Q_INIT_RESOURCE(myResourceFile)
。