您的位置:首页 > 移动开发

Degug: QmlApplicationEngine failed to load component

2017-07-19 16:53 225 查看
我在把c++类注册成qml可用时遇到这个问题

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QGuiApplication app(argc, argv);
    qmlRegisterType<serialhandler>("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中类的名字。

来看这一句

4000

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

第四个QML的类名首字母一定要大写!!!!!!qmlRegisterType<serialhandler>("Serial", 1, 0, "Serialhandler"); //这样就好了,唉 ~。~

.qml引用

import Serial 1.0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐