使用组件未找到 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 文件的主要内容,如果未能解决你的问题,请参考以下文章

未找到 Matplotlib Qt5Agg 后端

Qt 与 OpenCV:LNK2019:未解析的外部符号和未找到文件 mainwindow.obj

错误:Qt.createQmlObject():组件未准备好

未找到oracle客户端和网络组件,该怎么解决

.ui 文件未更新的 Qt 和 MSVC 问题

使用 OpenCV 3.0.0 的 Qt 5.6 未找到 DLL 入口点