LINUX.ORG.RU

qt qml проблема с абсолютным путем


0

1

Пишу на c++ с использованием qt и qml следущее: загружается окно и показывает компонент из файла content.qml если происходит ошибка, то загружается стандартная заглушка из ресурсов:

Loader {
  id: content
  source: "qml/proj001/Content.qml"//путь относительно бинарника
  
  onStatusChanged: {
    if (status == Loader.Error) {
      console.log("---------in error---------");
      source = "defContent.qml";
    }
  }
}

Проблема в том что qml не видит файл qml/proj001/Content.qml при загрузке он ищет его в ресурсах(«qrc:/qml/Content.qml»), подскажите пожалуйста как указать чтобы использовался относительный путь.


Файл нормально грузится олько если использовать полный путь: source: «file:///home/.../qml/proj001/Content.qml»;

di
() автор топика

> не видит файл qml/proj001/Content.qml при загрузке он ищет его в ресурсах
Судя п докам и по моему опыту, это путь относительно qml файла.

rival ★★
()
Ответ на: комментарий от Fastman

теперь ошибка при выполнении

qrc:/qml/main.qml:3:1: "qml/proj001": no such directory

di
() автор топика
Ответ на: комментарий от rival

если убирать qml/proj001/ и барть просто Content.qml, то при запуске ругается что этого файла нет в ресурсах. Как сделать чтобы не только в ресурсах искал?

di
() автор топика
Ответ на: комментарий от di

Если ты положил qml в ресурсы, то вероятно относительный путь в ресурсах и ищется.

Я бы заюзал applicationDirPath, то есть как-нибудь вот так:

context->setContextProperty("applicationDirPath", QApplication::applicationDirPath());
Loader {
  id: content
  source: applicationDirPath + "qml/proj001/Content.qml" //путь относительно бинарника
// ...

rival ★★
()
Ответ на: комментарий от rival

Большое спасибо за помощь! Получилось!

di
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.