Произошла ошибка при регистрации класса C++ с использованием QML_ELEMENT: QQmlApplicationEngine не удалось загрузить комC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Произошла ошибка при регистрации класса C++ с использованием QML_ELEMENT: QQmlApplicationEngine не удалось загрузить ком

Сообщение Anonymous »

Я написал простой пример, изучая QML и CMake. Основная цель — продемонстрировать, как использовать `qt_add_qml_module` и как регистрировать классы C++ в QML.
код ключа следующий:

Код: Выделить всё

**//CMakeLists.txt**
add_subdirectory(mybackend)

qt_add_executable(appMyMain
main.cpp
)

qt_add_qml_module(appMyMain
URI "MainApp"
RESOURCE_PREFIX /mycompany/mainapp
VERSION 1.0
QML_FILES Main.qml
)

target_link_libraries(appMyMain PRIVATE Qt6::Quick BackendLib)

qt_finalize_executable(appMyMain)

Код: Выделить всё

**//main.cpp**
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);

QQmlApplicationEngine engine;

engine.addImportPath(":/mycompany/imports");

const QUrl url(u"qrc:/mycompany/mainapp/Main.qml"_qs);

QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
&app, [url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
QCoreApplication::exit(-1);
}, Qt::QueuedConnection);

engine.load(url);

return app.exec();
}

Код: Выделить всё

**//Main.qml**
import QtQuick
import QtQuick.Controls
import MyCompany.Backend

Код: Выделить всё

**//mybackend/CMakeLists.txt**

qt_add_library(BackendLib STATIC)
set_target_properties(BackendLib PROPERTIES AUTOMOC ON)
qt_add_qml_module(BackendLib
URI "MyCompany.Backend"
RESOURCE_PREFIX /mycompany/mainapp
VERSION 1.0
SOURCES
MyBackend.h
MyBackend.cpp
)

target_link_libraries(BackendLib PRIVATE Qt6::Quick)

Код: Выделить всё

**//mybackend/Mybackend.h**
#include 
#include 

class MyBackend : public QObject
{
Q_OBJECT
QML_ELEMENT
Q_PROPERTY(QString userName READ userName WRITE setUserName NOTIFY userNameChanged)
Затем я получил следующее сообщение об ошибке:

Код: Выделить всё

QQmlComponent: attempted to load via a relative URL 'qrc:qt/qml/mycompany/mainapp/Main.qml' in resource file system. This is not fully supported and may not work
QQmlApplicationEngine failed to load component
qrc:qt/qml/mycompany/mainapp/Main.qml: No such file or directory
Я уже обращался к ИИ, но он не дал мне эффективных решений.

Подробнее здесь: https://stackoverflow.com/questions/798 ... applicatio
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»