当前位置: 首页 > news >正文

Qt Quick 08|QML 综合实战:简易音乐播放器 + 聊天界面

正文

结合前面所有知识点,完成两个综合实战项目,串联布局、控件、动画、列表、样式等核心能力。


案例一:简易音乐播放器

功能:播放 / 暂停按钮、歌曲列表、进度条、背景美化、简单动画

qml

import QtQuick 2.15 import QtQuick.Controls 2.15 import QtMultimedia 5.15 // 多媒体模块 ApplicationWindow { width: 400 height: 300 visible: true title: "QML 简易音乐播放器" // 音乐播放核心 MediaPlayer { id: player source: "qrc:/music/test.mp3" } // 界面布局 Column { anchors.fill: parent spacing: 10 padding: 15 // 歌曲封面 Rectangle { width: 120 height: 120 radius: 60 anchors.horizontalCenter: parent.horizontalCenter color: "#dddddd" } // 进度条 Slider { anchors.horizontalCenter: parent.horizontalCenter width: 300 from: 0 to: player.duration value: player.position } // 控制按钮 Row { anchors.horizontalCenter: parent.horizontalCenter spacing: 20 Button { text: player.playbackState === MediaPlayer.PlayingState ? "暂停" : "播放" onClicked: { if(player.playbackState === MediaPlayer.PlayingState) player.pause() else player.play() } } Button { text: "停止" onClicked: player.stop() } } // 歌曲列表 ListView { width: 300 height: 80 model: ListModel { ListElement { name: "歌曲A" } ListElement { name: "歌曲B" } ListElement { name: "歌曲C" } } delegate: Text { text: name; height: 24 } } } }

说明:项目.pro 文件需添加QT += multimedia多媒体模块。


案例二:简易聊天界面

功能:消息列表、输入框、发送按钮、上下布局、消息气泡样式

qml

import QtQuick 2.15 import QtQuick.Controls 2.15 ApplicationWindow { width: 400 height: 500 visible: true title: "QML 简易聊天界面" Column { anchors.fill: parent spacing: 5 padding: 8 // 聊天消息列表 ListView { id: msgList width: parent.width height: parent.height - 60 clip: true model: ListModel { ListElement { msg: "你好!"; isSelf: false } ListElement { msg: "哈喽~"; isSelf: true } } delegate: Rectangle { width: parent.width height: 40 color: "transparent" // 区分自己消息 / 对方消息 Rectangle { text: msg padding: 8 radius: 6 color: isSelf ? "#91d5ff" : "#f0f0f0" anchors.right: isSelf ? parent.right : undefined anchors.left: !isSelf ? parent.left : undefined anchors.margins: 10 } } } // 底部输入区域 Row { width: parent.width height: 50 spacing: 5 TextField { id: edit width: parent.width - 80 height: 40 placeholderText: "输入消息..." } Button { text: "发送" width: 70 height: 40 onClicked: { if(edit.text !== ""){ msgList.model.append({"msg":edit.text, "isSelf":true}) edit.text = "" } } } } } }

实战总结

  1. 音乐播放器:综合多媒体模块、Slider、ListView、状态判断
  2. 聊天界面:核心是ListView 气泡布局、动态追加数据、基础交互
  3. 两个案例覆盖 QML 80% 常用知识点,可在此基础上扩展头像、表情包、网络通信等功能。
http://www.jsqmd.com/news/989284/

相关文章:

  • 鸿蒙新特性——Canvas 涂鸦画板深度解析
  • Axure RP中文语言包终极指南:三步告别英文界面困扰
  • AI搜索时代下的技术破局:瀚域智擎GEO优化实战解析
  • 如何高效管理抖音内容:douyin-downloader开源工具深度解析
  • 2026年 拆包机厂家推荐榜单:吨包拆包机/无尘拆包机/密闭式防爆吨袋拆包机,自动与不锈钢碳钢型号实力拆包设备详解 - 品牌发掘
  • LLM赋能推荐系统的风险诊断与缓解策略
  • 2026年当下,如何选择有名的酒店陶瓷餐具源头厂家:标准与案例剖析 - 品牌鉴赏官2026
  • 别再手动记RGB值了!用Python+OpenCV快速提取图片主题色(附完整代码)
  • Android桌面Widget开发示例:支持4个标题切换的列表型小部件
  • 2026若尔盖四大核心景区评测 适配全人群游玩攻略 - 优质品牌商家
  • ResNet50D图像分类GUI工具:拖图识别+热力图解释+ONNX一键导出
  • 大模型API采购企业传承——DMXAPI关键岗位人员变动的企业知识保全与交接
  • AI - 最新大模型编程方面使用指南参考
  • 量子计算中的N-可表示性问题与ADAPT-VQA算法
  • 基于Spring Boot的疫情数据自动采集与ECharts动态图表展示系统(含完整Java源码)
  • 数据的加密与解密(01:54)
  • 2026年 压力环式快开盲板厂家推荐榜单:实力工厂,高品质生产与选购全解析 - 品牌发掘
  • 终极指南:5个简单方法彻底解决FanControl风扇控制软件更新失败的完整方案
  • 如何高效部署实时人像动画系统:完整配置指南
  • 3步永久保存微信聊天记录:告别数据丢失,让珍贵对话永远留存
  • 深圳技术学校专业适配性评测:4所院校核心维度对比 - 优质品牌商家
  • 多级TT时空求解器在非线性PDE中的应用与优化
  • 别再只会用CSS的ease-in-out了:手把手教你用三阶贝塞尔曲线定制iOS/Android动画缓动函数
  • IDEA 创建 Java 项目 SpringMVC Thymeleaf 碰到的问题
  • 【2027最新】基于SpringBoot+Vue的智慧校园之家长子系统管理系统源码+MyBatis+MySQL
  • GEO公司|2026年国内主流服务商全维度测评与专业选型指南 - GEO优化
  • 行业定制开发:对接业务系统的AI客服与知识库智能体实现
  • 终极Aria2GUI完整指南:从命令行到macOS图形界面的技术实现
  • Playnite终极指南:一站式解决多平台游戏管理难题的免费开源方案
  • 世毫九实验室(Shardy Lab)原创理论开源与版权声明