栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

QR扫码综合示例教程(十九)Qt5.15.2+Qt6.2.1(qml)拍照捕获视频帧(示例合并)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

QR扫码综合示例教程(十九)Qt5.15.2+Qt6.2.1(qml)拍照捕获视频帧(示例合并)

前言:

本次教程是把前两个示例合并在一个工程中,以方便后面的教程

在日常开发过程中,笔者不建议将2个大版本的Qt/qml合并,毕竟二者相关太大,不便维护

笔者使用的是Qtcreator6.0.0

一、新建qml工程

 

 

 

 以上过程仅供参考

Qtcreator6还未正式发布,本身就存在不少问题,建议小伙伴还是继续使用QtCreator5.0.3

 想吐槽一下,Qtcreator6建qml工程,竟没有模块工程了

二、复制原工程文件

1将所有C++文件复制到工程对应目录中

注意,2个Tool类要合并一下

2.将qml文件按照版本号放入不同的目录中

 当然也可以使用pri文件,建2个工程,引入同样的C++类文件

三、修改工程文件

增加新模块,并添加C++、qml文件,关键代码如下

QT += quick qml multimedia quickcontrols2

SOURCES += 
        imageprovider/imageprovider.cpp 
        main.cpp 
        tool/tool.cpp

HEADERS += 
    imageprovider/imageprovider.h 
    tool/tool.h

RESOURCES += 
    qml.qrc

qml.qrc文件中,请小伙伴自己添加qml文件

笔者建议,若真需要同时兼容多个版本的qml文件,请不要放在一个qml.qrc文件中。应该每个版本放置一个,并根据大版本,加载不同的qml.qrc文件,使用方法如下所示

greaterThan(QT_MAJOR_VERSION, 5){
#        message(当前为Qt6及以上版本)
    RESOURCES += qml6.qrc
}
else{
#    message(当前为Qt6以下版本)
    RESOURCES += qml5.qrc
}
四、修改main.cpp文件
int main(int argc, char *argv[])
{
    //自定义style
    QQuickStyle::setStyle("Material");
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif

    QGuiApplication app(argc, argv);

    //注册C++到qml
    qmlRegisterType("com.xdqd.classes", 1, 0, "Tool");

    QQmlApplicationEngine engine;
    //添加图像提供者
    engine.addImageProvider(QLatin1String("imageProvider"), new ImageProvider);
    //在不同Qt版本,加载不同的文件
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
    const QUrl url("qrc:/qml/qt5/main.qml");
#else
    const QUrl url(u"qrc:/qml/qt6/main.qml"_qs);
#endif

    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();
}

完成以上操作后,就可以使用Qt5.15.2或Qt6.2.1编译工程了

本次教程示例源码

后记:

若是条件允许,笔者还是建议多尝试一下高版本的Qt,新版本有了多处更新,如现在qml和js都转化成C++代码,再编译(当前也出现了不少问题)

下篇会再次加入opencv的解码函数

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/443888.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号