使用组件未找到 Qt 文件
Posted
技术标签:
【中文标题】使用组件未找到 Qt 文件【英文标题】:Qt File not found using component 【发布时间】:2014-09-02 10:36:46 【问题描述】:C++:
int main(int argc, char *argv[])
QGuiApplication app(argc, argv);
QQmlEngine engine;
interaction inter("test");
engine.rootContext()->setContextProperty("interaction", &inter);
QQmlComponent component(&engine, QUrl::fromLocalFile("qrc:///main.qml"));
if (component.status() != component.Ready)
if (component.status() == component.Error)
qDebug(component.errorString().toUtf8().constData());
else
qDebug("not ready");
component.create();
return app.exec();
QML:
import QtQuick 2.2
Rectangle
width: 500 ; height: 500
visible: true
MouseArea
anchors.fill: parent
onClicked:
text.text = inter.author
Text
id: text
text: "some text to change"
错误:
"file:///C:/Qt/Tools/QtCreator/bin/build-testcpp-Desktop_Qt_5_3_MSVC2013_OpenGL_64bit-Debug/qrc:/main.qml:-1 找不到文件
QQmlComponent: 组件没有准备好”
我是 qt 的新手,并尝试使用 c++ 更改文本元素,它编译并运行良好,但它永远不会加载,因为它找不到 qrc 文件。我尝试禁用影子构建,使用完整路径而不是“qrc:///main.qml”传递 QUrl,并且尝试将路径包装在 QStringLiteral 中,但似乎没有任何效果。
如果有人有任何建议,将不胜感激。
编辑:
.pro
TEMPLATE = app
QT += qml quick
SOURCES += main.cpp \
interaction.cpp
RESOURCES += qml.qrc
# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =
# Default rules for deployment.
include(deployment.pri)
HEADERS += \
interaction.h
.qrc
<RCC>
<qresource prefix="/">
<file>main.qml</file>
<file>MyItem.qml</file>
</qresource>
</RCC>
【问题讨论】:
【参考方案1】:首先,不要禁用影子构建。他们不是问题。从来没有。
qrc
不引用文件系统。它指的是Qt资源系统。 main.qml
文件必须编译到应用程序的可执行文件中。 qt 资源编译器 (qrc) 工具可以处理这个问题。
因此,您的网址是错误的。该文件不是本地文件。它是一种资源。只需这样做:
QQmlComponent component(&engine, QUrl("qrc:/main.qml"));
【讨论】:
感谢您的回复!在原始问题中包含 .pro 和 .qrc ,是的,我通常不会弄乱项目配置,但我正在尝试我能找到的任何东西。以上是关于使用组件未找到 Qt 文件的主要内容,如果未能解决你的问题,请参考以下文章
Qt 与 OpenCV:LNK2019:未解析的外部符号和未找到文件 mainwindow.obj