Degug: QmlApplicationEngine failed to load component

我在把c++类注册成qml可用时遇到这个问题

 
  
int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QGuiApplication app(argc, argv);

 
  
    qmlRegisterType("Serial", 1, 0, "serialhandler");

 
  
    QQmlApplicationEngine engine;
    engine.load(QUrl(QLatin1String("qrc:/main.qml")));
    if (engine.rootObjects().isEmpty())
        return -1;
 
  
    return app.exec();
}

qmlRegisterType 是一个可以将C++实现的类在QML中调用的,连接C++和QML的一个工具

首先来看QtAssistant的介绍

int qmlRegisterType(const char * uri, int versionMajor, int versionMinor, const char * qmlName)

This template function registers the C++ type in the QML system with the name qmlName, in the library imported from uri having the version number composed from versionMajor and versionMinor.


可以看到qmlRegisterType里总共4个参数,第一个参数* uri指的是QML中import后的内容,相当于头文件名,第二个第三个参数分别是主次版本号,第四个指的是QML中类的名字。

来看这一句

qmlRegisterType("Serial", 1, 0, "serialhandler");

第四个QML的类名首字母一定要大写!!!!!!

qmlRegisterType("Serial", 1, 0, "Serialhandler"); //这样就好了,唉 ~。~

.qml引用

import Serial 1.0


你可能感兴趣的:(Qt5)