Как решить, что модуль qml не найден (дизайнер qml)

Согласно https://doc.qt.io/qtcreator/qtquick-placeholder-data.html#creating-dummy-context Я хочу добавить фиктивный контекст в свой проект QT 5.15.2. На веб-странице упоминается создание файла qml со следующим содержимым:

import QtQuick 2.0
import QmlDesigner 2.0 // this is where the error is indicated: qml module not found (qml designer)

DummyContextObject {
     parent: Item {
         width: 640
         height: 300
     }
 }

Судя по всему, модуль QmlDesigner неизвестен. Я не знаю, как это решить.


person Eugène Bindels    schedule 23.01.2021    source источник


Ответы (1)


Модель кода qml ничего не знает о существовании этого типа. Так что это правильно, если он показывает это вам.

В деталях этот объект существует только в том случае, если внутренний процесс (qmlpuppet или в документации называемый эмуляционным слоем) отображает материал для представления формы в дизайнере.

Но в текущей реализации модель кода qml ничего не знает о добавленных объектах, когда работает слой эмуляции.

Я бы создал отчет об ошибке на https://bugreports.qt.io/ об этой проблеме. Таким образом, модель кода qml должна каким-то образом знать об этом типе.

Чтобы убедиться, что эта функция работает в режиме конструктора, убедитесь, что вы следуете справке, например, нет версии qmldesigner 2.0, существует только версия 1.0.

Объяснение в марионетке, с которой зарегистрирован объект: qmlRegisterType(QmlDesigner, 1, 0, DummyContextObject); см. https://code.qt.io/cgit/qt-creator/qt-creator.git/tree/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp#n184

Также важна структура файлов и папок.

person Tim Jenßen    schedule 24.01.2021
comment
Не могли бы вы уточнить структуру файлов и папок? Насколько я понимаю, файл qml, содержащий фиктивный контекст, должен находиться в корне проекта, а его имя должно совпадать с именем приложения (разумеется, без расширения qml). - person Eugène Bindels; 25.01.2021
comment
Вопрос новичка: означает ли это, что я должен добавить qmlRegisterType("QmlDesigner", 1, 0, "DummyContextObject"); в свой исходный код и внести изменения в QML_DESIGNER_IMPORT_PATH в моем файле .pro? - person Eugène Bindels; 25.01.2021