Подтвердить что ты не робот

Как использовать qrc в С++ и QML-приложении?

Я написал приложение Qt Quick Desktop в С++ qnd Qt Creator (QML) на Windows7. Теперь Я должен развернуть его, и мне нужно скрыть 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();
}

Я попытался прочитать файл myMain.qml из Resource.qrc, например:

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 не знает, что делать с: ":/".

Мне нужно использовать файл .qrc в:

  • Загрузка файла myMain.qml
  • Использование импорта в qml файлы в myMain.qml
  • Использование изображений в моих qml файлах

Не могли бы вы объяснить мне, что случилось? и что мне нужно сделать, чтобы использовать .qrc как в С++, так и в qml?

Большое спасибо:)

4b9b3361

Ответ 1

Попробуйте это:

view.setSource(QUrl("qrc:/qml/GenericHostApplicationQML/myMain.qml"));

Когда вы это сделаете:

QUrl(":/qml/GenericHostApplicationQML/myMain.qml");

путь: "file:///qml/GenericHostApplicationQML/myMain.qml"