Хобрук: Ваш путь к мастерству в программировании

Есть ли способ импортировать папку, содержащую файлы Qml, которая находится за пределами каталога проекта?

У меня есть набор Qmls, который находится в папке. Теперь я хочу использовать эти файлы Qml в проекте Qt. Есть ли способ импортировать эти QML в мой проект без копирования папки Qml в каталог моего проекта?

Мой файл .pro выглядит так:

RESOURCES += qml.qrc
RESOURCES += $$PWD/../QML_Assets


QML_IMPORT_PATH = $$PWD/../QML_Assets
QML2_IMPORT_PATH = $$PWD/../QML_Assets

Непосредственный qrc генерируется следующим образом:

D:/Qt_Projects/Dummy_sample/QML_Assets/QML_2.qml D:/Qt_Projects/Dummy_sample/QML_Assets/QML_1.qml

Если я добавлю import ../QML_Assets/, мое приложение запустится и завершится немедленно. Если я не импортирую это и не прокомментирую используемые компоненты из папки QML_Assets, тогда он будет работать.

23.01.2020

Ответы:


1

В Qt есть несколько возможностей сделать это.

Сначала вы можете установить переменные в файле проекта Qt (.pro), чтобы добавить пути импорта QML.

# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =
QML2_IMPORT_PATH =

Вы также можете сделать это непосредственно в коде C ++ с помощью QQmlEngine :: addImportPath перед построением / запуском вашего Qml-представления

Затем вы можете проверить, какие пути импорта установлены для вашего приложения, с помощью QQmlEngine :: importPathList < / а>

Здесь представлена ​​документация Qt по операторам импорта и, в частности, QML Import Path

И даже более конкретно: Импорт каталогов документов QML

23.01.2020
  • Не могли бы вы поделиться ссылкой с примером, в котором используется QML_IMPORT_PATH = ..... QML2_IMPORT_PATH = .... в файле .pro? 23.01.2020
  • Это простой путь к вашей папке. Вы можете найти пример в Qt Demos / Примеры. Например, здесь: doc.qt.io/qt-5/ qtdoc-demos-coffee-example.html посмотрите в файле coffee.pro 23.01.2020
  • То, что вы говорите, правильно, но в примере с кофе все ресурсы добавлены в файл qrc. Но когда я переместил папку импорта на 1 уровень вверх, он не смог этого обнаружить, даже если я поставил QML_IMPORT_PATH = $$ PWD /../ import вместо QML_IMPORT_PATH = $$ PWD / import. 23.01.2020
  • Вы уверены, что говорите о путях импорта QML, а не об импорте файлов qml в файл qrc? Вы читали об импорте каталогов - ›doc.qt.io/qt- 5 / qtqml-syntax-directoryimports.html. 23.01.2020
  • Да, я читал примерно то же самое, но когда я это делаю, мое приложение может получить доступ к qmls, но затем оно завершилось с кодом -1. 23.01.2020
  • А что говорит отладчик? Если бы вы могли опубликовать пример своего дела, это могло бы помочь 23.01.2020
  • Обновил вопрос .. Можно ли как-нибудь добавить записи в qrc файл? как мы добавляем SOURCES + = main.cpp, аналогично qml.qrc + = file1.qml. 23.01.2020
  • Новые материалы

    HMTL - Многозадачное обучение для решения задач НЛП
    Достижение результатов SOTA путем передачи знаний между задачами Область обработки естественного языка включает в себя десятки задач, среди которых машинный перевод, распознавание именованных..

    Решения DBA Metrix
    DBA Metrix Solutions предоставляет удаленного администратора базы данных (DBA), который несет ответственность за внедрение, обслуживание, настройку, восстановление базы данных, а также другие..

    Начало работы с Блум
    Обзор и Codelab для генерации текста с помощью Bloom Оглавление Что такое Блум? Некоторые предостережения Настройка среды Скачивание предварительно обученного токенизатора и модели..

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..