本帖最后由 1pwdzsj1 于 2023-4-10 09:17 编辑
#申请原创# #技术资源#
介绍:
一、环境说明
1.QT Creator 版本为4.11.1,QT版本为5.14.1
2.软件架构组成:软件逻辑有QT的C++编写,图形界面由描述性脚本qml编写,数据交互由轻型的数据库SQLite完成
3.实现功能:可以实现双通道音频数据分离为左右通道并绘制波形图显示,可以在此基础上轻松拓展实现录音保存,录音回放
4.软件架构:本项目采用前后端分离的逻辑架构,后端采用QT的C++多线程来处理数据逻辑,前端采用qml来处理图形化界面,数据有SQLite数据库处理
5.对此项目评价:本项目为本人为发帖21ic电子技术论坛而开发,历时5天业余时间完成哈哈,本项目最大亮点是使用qml开发图像化界面,很多QT开发项目是用Widgets来开发图形化界面,导致qml开发资源资料少之又少,很难找到自己需求的的demo,之前有做个一下音频项目,特此用qml做了一个音频处理显示的demo,希望大家多多使用qml开发图形化界面。QT官方初期推出qml图形化界面开发,在QT5版本之前,QT的qml开发有很多bug,导致大多数人偏向Widgets开发界面,随着QT5版本的推进及优化,qml的开发已经大大改善,越来越成熟,开发也得心应手,特别是对大型的QT软件多人协同开发图形化界面qml要比Widgets处理图形化界面更加占有优势,推荐大家多多使用qml开发图形界面。发帖经验不足,写的不好或不对的地方欢迎留言批评指导。帖子结尾会一如既往附程序源码,让你看到并直接用到,不做任何保留,希望大家多多指教。
二、具体讲解
1.软件逻辑块分为5个文件,图形界面处理分为4个qml文件,**显示有一个.ico文件,具体划分如下图:
说明:上图逻辑处理和图形化界面显示可以单独分离逻辑和显示部分移植,不管借用逻辑处理还是显示界面皆可独立出来使用,方便上手,移植到其他项目直接使用 2.源码核心部分解读如下图:
说明:1>数据库函数文件sqlitefun.cpp,包含了数据库的基本操作。例如查询、添加、删除、和修改数据等,可以直接是用本文件数据库函数进行移植操作,同时也可以自己独立出来自己在其他项目使用,以及封装完成并经过验证。 2 >DataSource.cpp文件为整个逻辑处理界面,里面包含了qml和QT C++的信号槽交互,以及数据库处理,音频格式定义处理,多线程创建以及操作使用等,特别说明多线程操作可以处理多个音频模块数据,音频模块如果过多不加入多线程实测会出现死机问题,如果单个音频可以不使用多线程处理,文件看似简单实则麻雀虽小五脏俱全 。 3>qml文件显示部分使用GridView控件来完成的,用代理方式来实现多个模块显示,可以在此基础上,理论无限拓展显示模块(根据你音频设备个数定),具体文件为CreatDevReadDataModel.qml,主要负责模块显示。在此介绍一下GridView控件, GridView 控件是一个二维的网格布局控件,可以用来显示二维数据,例如图像、矩阵、表格等。GridView 控件可以根据设定的行数、列数、单元格大小和间距等属性自动排列子控件,使得子控件可以形成一个二维网格布局,多个点组成可显示波形曲线。 三、实测图如下:
说明:本实物图显示的是两个声道,因为我的音频设备是双声道的,如果是单声道音频设备,可以在qml调用QT C++初始化音频函数里面配置单声道即可,具体函数可参考DataSource.cpp文件里的initAudo函数,同时也可以直接编辑数据库文件AudioSystem_database.db来操作,打开数据文件软件推荐SQLite Expert Professional,方便修改和浏览数据库配置。
四、总结
1.借此机会建议大家多多使用qml开发图形化界面,总结一下qml优点
简单易学:QML基于JavaScript语言,语法简单易懂,学习成本低。
声明式语言:QML使用声明式语言描述UI和应用程序逻辑,使代码更易读,易于理解和维护。
快速开发:QML提供了许多预制的UI组件,可以快速构建用户界面,同时还可以轻松地自定义这些组件。
跨平台支持:QML运行多个平台(如Windows,Linux,Mac OS等),多开发语言(如C ++,Python等),有较高的灵活性。
易于集成:QML可与C ++代码无缝集成,可以轻松访问C ++的功能和库。
高性能:QML使用OpenGL ES进行渲染,有良好的性能和流畅度。QML优化技术,如局部更新和缓存,进一步提高性能。
2.发帖目的希望能够分享自己的知识和信息资料,共同探讨问题和话题,通过论坛上的其他用户发帖提出建议和见解来更加完善项目的不足,更深层次完善优化项目,发帖不易,请多多留言探讨,谢谢!
|
通过录音波形绘制示例,展示QML的开发技巧,本文偏重于工程分享,关键技术的着墨过少,以后的文章注意偏重可提高打赏