【发布时间】:2015-05-10 21:54:35
【问题描述】:
我创建了 Qt Quick 2 Controls 项目,添加了资源,将我的 qml 文件放在资源中,并为该文件添加了别名。现在我想知道,为什么下一个代码无法将 qml-file 加载为主 qml-file:
#include <QDebug>
#include <QFile>
#include <QByteArray>
#include "qtquick2controlsapplicationviewer.h"
int main(int argc, char *argv[]) {
Application app(argc, argv);
QString fileInResource(":main/mainQml");
QFile f(fileInResource);
if (!f.exists()) {
qDebug() << "No file";
} else {
f.open(QIODevice::ReadOnly);
qDebug() << f.readAll();
}
QtQuick2ControlsApplicationViewer viewer;
viewer.setMainQmlFile(fileInResource);
viewer.show();
return app.exec();
}
由于在使用QFile的情况下,它会正确读取文件并输出整个文件,但viewer说:
file:///path/:main/mainQml:-1 找不到文件
QQmlComponent: 组件没有准备好 错误:您的根项目必须是一个窗口。`
如何让viewer 加载我的 qml 文件?
UPD:添加了最小的工作示例——download it here
【问题讨论】:
-
试试 qrc://main/mainQml
-
弗兰克,这样我得到了更糟糕的结果:
No file file:///path/qrc:/main/mainQml:-1 File not found