如何从Android设备上的qt资源文件访问xml文件?是否需要采取任何特殊设置?
资源档案:
<RCC>
<qresource prefix="/">
<file>main.qml</file>
<file alias="keyStorage">xml/key.xml</file>
</qresource>
</RCC>
用于调用文件的c ++代码:
void MyClass::myfunction() {
Q_INIT_RESOURCE(qml);
QFile xmlFile("qrc:/xml/key.xml");
//...
}
用于调用文件(main.qml)的QML代码:
ListView {
width: 320
height: 120
model: listModel
delegate: Text{ text: "key: " + key }
}
XmlListModel {
id: listModel
source: "qrc:/xml/key.xml"
query: "/root/pair"
XmlRole {
name: "key"
query: "key/string()"
}
onStatusChanged: {
console.log(listModel.errorString())
}
}
最后但并非最不重要的是xml文件(key.xml):
<?xml version="1.0" encoding="UTF-16"?>
<root>
<pair>
<key>0815</key>
</pair>
<pair>
<key>1337</key>
</pair>
</root>
我已尝试过路径:
:/xml/key.xml
:/keyStorage/key.xml
:/keyStorage
qrc:/keyStorage/key.xml
qrc:/xml/key.xml
qrc:/keyStorage
但没有任何效果..显示以下错误:
qml: Error opening :/xml/key.xml: Unknown error (error from the XmlListModel)
io\qiodevice.cpp:820 (qint64 QIODevice::read(char*, qint64)): QIODevice::read: device not open (error from c++)
资源文件已添加到.pro文件
中修改
从资源文件中打开图像只能使xml文件失效..
EDIT_2:
大家好,
我没有找到解决此问题的方案,但我发现在向现有项目添加新目录时出现了问题。当我将xml文件添加到现有目录时,它可以正常工作。添加新目录并不起作用..