【发布时间】:2017-06-06 09:47:25
【问题描述】:
我正在尝试将QT Quick (QML) 与Visual Studio 2015 和CMake 一起使用。我从一个示例“QT Quick Controls - Gallery”开始,并将其转移到 CMake。它在 QT Creator(使用 Visual Studio 的编译器)中运行良好,但在 Visual Studio 中运行良好(使用 CMake GUI 生成的解决方案):
QQmlApplicationEngine failed to load component
qrc:/main.qml:-1 File not found
我试图找出问题并找到了这个很好的例子:https://github.com/mattfife/QtQuick-with-cmake,它在 QT Creator 中工作(经过一些修改),但在 Visual Studio 中却有完全相同的问题。
qml.qrc 文件是这样的:
<RCC>
<qresource prefix="/">
<file>main.qml</file>
</qresource>
</RCC>
对于这两种环境(QT Creator 和 Visual Studio),我在构建目录中有一个文件src/qml.qrc.depends,其内容正是之前的 qml 文件。
main.cpp中的重要部分:
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
如果我消除CMakeLists.txt文件中的下一行,则可以在QT Creator中重现该错误:
qt5_add_resources(qml_QRC src/qml.qrc)
知道如何解决它或尝试什么吗?例如,我不知道如何调试这个QQmlApplicationEngine 对象。
【问题讨论】:
-
您应该尝试加载
":/main.qml"而不是"qrc:/main.qml"。您的 qml.qrc 文件中未声明任何前缀。然后,您不必在调用文件之前使用一个。 -
@Abrikot 不,它不起作用。现在消息中的第二行是
file:///D:/Sources/External/QtQuick-with-cmake/build/:/main.qml:-1 File not found -
我目前没有什么要测试的,但它似乎在构建目录中寻找你的文件。因此,如果您的
main.qml文件被复制到D:/Sources/External/QtQuick-with-cmake/build/main.qml,则删除:/应该可以,例如engine.load(QUrl(QStringLiteral("main.qml")));. -
嗯,它做了一些事情:
QQmlApplicationEngine failed to load component file:///D:/Sources/External/QtQuick-with-cmake/build/main.qml:1 le module "QtQuick" n'est pas install? file:///D:/Sources/External/QtQuick-with-cmake/build/main.qml:2 le module "QtQuick.Window" n'est pas install?抱歉...法语。 main.qml 中的前两行是:import QtQuick 2.3 import QtQuick.Window 2.2 -
但即使这种解决方法可行,我认为这不是解决方案,因为 QT Creator 显然不需要它。此外,还有这个生成的 qrc_qml.cpp 文件......它不应该做这个工作吗?
标签: c++ visual-studio qt cmake qt-quick