C++ 有些资源无法通过URL访问

C++ 有些资源无法通过URL访问,c++,qt,resources,C++,Qt,Resources,我在Windows上使用所有MVSC2013 32位、MinGW 4.8.2 32位编译器和用于Android的GCC 4.9从Qt 5.3.2中的资源加载二进制文件时遇到问题 我有两个资源文件。它们都位于项目的根目录以及所有资源中。第一个是qml.qrc,它是: <RCC> <qresource prefix="/"> <file>main.qml</file> <file>ScoreText.

我在Windows上使用所有MVSC2013 32位、MinGW 4.8.2 32位编译器和用于Android的GCC 4.9从Qt 5.3.2中的资源加载二进制文件时遇到问题

我有两个资源文件。它们都位于项目的根目录以及所有资源中。第一个是qml.qrc,它是:

<RCC>
    <qresource prefix="/">
        <file>main.qml</file>
        <file>ScoreText.qml</file>
        <file>ControlButton.qml</file>
    </qresource>
</RCC>
我可以读取QML没有问题,但是“声音”文件有问题

...
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    Q_INIT_RESOURCE(resource);

    QFile q_file;
    q_file.setFileName(":/sound.wav"); // works
    // q_file.setFileName("qrc:/sound.wav"); does not work
    // q_file.setFileName("qrc:///sound.wav"); does not work
    q_file.open(QIODevice::ReadOnly);
    if (!q_file.exists()) 
        qCritical() << "File does not exist.";

    return app.exec();
}
。。。
int main(int argc,char*argv[])
{
QApplication应用程序(argc、argv);
qqmlaplicationengine;
engine.load(QUrl(QStringLiteral(“qrc:/main.qml”));
Q_INIT_资源(资源);
QFile q_文件;
q_file.setFileName(“:/sound.wav”);//有效
//q_file.setFileName(“qrc:/sound.wav”);不起作用
//q_file.setFileName(“qrc:///sound.wav不起作用
q_file.open(QIODevice::ReadOnly);
如果(!q_file.exists())

qCritical()
QDir::setSearchpath(“qrc”,“:/”);
我不得不将其更改为QDir::setSearchpath(“qrc”,QStringList(:/”);但它是有效的,看起来有点像黑客,虽然:)它不是黑客。你需要阅读Qt文档。你能指出你心目中文档的具体部分吗?在关于资源系统的部分,我看不到任何与你的评论相关的东西,恰恰相反-例如,文件路径:/images/cut.png或URLqrc:///images/cut.png 将授予对cut.png文件的访问权限,“-建议不需要其他代码。请阅读有关
QDir::setSearchpath
和路径别名的文档。
QT += qml quick widgets multimedia
RESOURCES += qml.qrc resource.qrc
...
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    Q_INIT_RESOURCE(resource);

    QFile q_file;
    q_file.setFileName(":/sound.wav"); // works
    // q_file.setFileName("qrc:/sound.wav"); does not work
    // q_file.setFileName("qrc:///sound.wav"); does not work
    q_file.open(QIODevice::ReadOnly);
    if (!q_file.exists()) 
        qCritical() << "File does not exist.";

    return app.exec();
}