如何从android上的qt资源文件访问文件?

时间:2014-10-30 07:40:01

标签: android c++ qt

如何从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文件添加到现有目录时,它可以正常工作。添加新目录并不起作用..

0 个答案:

没有答案