我在Windows7上用c ++ qnd Qt Creator(QML)编写了一个Qt Quick Desktop应用程序。现在 我必须部署它,我需要隐藏qml文件和图像(意思是:将它们放在资源等中)。
我已经读过使用.qrc文件有很好的方法。我阅读了有关这些文件的文档,并为我的应用程序创建了一个文件,如下所示:
<RCC>
<qresource prefix="/">
<file>qml/GenericHostApplicationQML/myMain.qml</file>
<file>qml/GenericHostApplicationQML/content/PressAndHoldButton.qml</file>
<file>qml/GenericHostApplicationQML/content/TextButton.qml</file>
<file>qml/GenericHostApplicationQML/content/pics/advancedsettings.png</file>
<file>qml/GenericHostApplicationQML/content/pics/cnruninstall.png</file>
<file>qml/GenericHostApplicationQML/content/pics/dialog_cancel.png</file>
<file>qml/GenericHostApplicationQML/content/pics/folder_explore.png</file>
<file>qml/GenericHostApplicationQML/content/pics/gnome_session_switch.png</file>
<file>qml/GenericHostApplicationQML/content/pics/mail2_send.png</file>
<file>qml/GenericHostApplicationQML/content/pics/Picture1.png</file>
<file>qml/GenericHostApplicationQML/content/pics/Picture2.png</file>
</qresource>
在main.cpp中,我正在加载Main.qml文件,如:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDeclarativeView view;
view.setSource(QUrl::fromLocalFile("qml/GenericHostApplicationQML/myMain.qml"));
view.show();
return app.exec();
}
我尝试从Resources.qrc中读取myMain.qml文件,如:
view.setSource(QUrl(":/qml/GenericHostApplicationQML/myMain.qml"));//I added the ":/"
但是我遇到了这个错误:
file:///qml/GenericHostApplicationQML/myMain.qml: File not found
当我尝试这个时:
view.setSource(QUrl::fromLocalFile(":/qml/GenericHostApplicationQML/myMain.qml"));
我得到了这个:
file:///C:/Users/ayalafre/Desktop/ghaQML/GenericHostApplicationQML-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Release/:/qml/GenericHostApplicationQML/myMain.qml: File not found
好像我的Qt不知道该怎么做:&#34;:/&#34;。
我必须使用.qrc文件:
你能告诉我什么是错的吗? 以及为了在c ++和qml中使用.qrc我必须做些什么?
非常感谢:)
答案 0 :(得分:19)
你试试这个:
view.setSource(QUrl("qrc:/qml/GenericHostApplicationQML/myMain.qml"));
执行此操作时:
QUrl(":/qml/GenericHostApplicationQML/myMain.qml");
路径为“file:///qml/GenericHostApplicationQML/myMain.qml”