#qt #qml
#qt #qml
Вопрос:
Я пытаюсь запустить этот пример с qt 5.15.1
Когда я объявляю QML_IMPORT_NAME, переменная кажется неизвестной из qt (см. Цвет шрифта на скриншоте ниже), и когда я импортирую «com.mycompany.messaging» в свой файл qml, у меня появляется ошибка «Модуль QML не найден».
Редактировать: после некоторых исследований код выполняется так, как должен, но у меня есть эта ошибка в Qt Creator. Если я хочу отредактировать файл qml с помощью редактора графического интерфейса, мне нужно закомментировать весь код, связанный с серверной частью, в текстовом режиме, прежде чем в противном случае файл не удастся открыть.
В чем хитрость?
Комментарии:
1. Вы добавили макрос QML_ELEMENT (или аналогичный) к типу C ?
2. Да. : class UiBackend : public QObject { Q_OBJECT Q_PROPERTY(QString userName ЧТЕНИЕ имени пользователя ЗАПИСЬ setUserName УВЕДОМЛЕНИЕ имени пользователя ИЗМЕНЕНО) QML_ELEMENT public:
3. Пример работает для меня. Вы сказали, что используете «qt 15.1», что, я полагаю, является опечаткой и что вы на самом деле используете 5.15.1? Вы запускали qmake и перестраивали после внесения изменений?
4. Да, правильно 5.15.1, я делал qmake и перестраивал много раз …. : (
5. Можете ли вы сказать мне, окрашен ли QML_IMPORT_CONFIG в вашем файле pro?
Ответ №1:
При этом я предположил, что должен был добавить
CONFIG = qmltypes
в файл .pro. Но поскольку я переключился на cmake и не нашел эквивалента, поэтому я использовал старый метод с:
qmlRegisterType<Person>("People", 1,0, "Person");
в main.cpp (см. Ссылку выше).
Ответ №2:
Это известная ошибка, которая еще не исправлена (https://bugreports.qt.io/browse/QTCREATORBUG-24987 ).
Причина ошибки в том, что QtCreator требует сгенерированного .qmltypes и metatypes.json файлы рядом с двоичным файлом приложения.
Обходным путем для этого является добавление следующего в ваш файл pro:
CONFIG(debug, debug|release) {
EXE_DIR = $${OUT_PWD}/debug
} else {
EXE_DIR = $${OUT_PWD}/release
}
CONFIG = file_copies
COPIES = qmltypes metatypes
qmltypes.files = $$files($${OUT_PWD}/$${TARGET}.qmltypes)
qmltypes.path = $${EXE_DIR}
metatypes.files = $$files($${OUT_PWD}/$${TARGET}_metatypes.json)
metatypes.path = $${EXE_DIR}