news 2026/6/11 2:00:58

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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% 常用知识点,可在此基础上扩展头像、表情包、网络通信等功能。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 1:57:10

Axure RP中文语言包终极指南:三步告别英文界面困扰

Axure RP中文语言包终极指南:三步告别英文界面困扰 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的…

作者头像 李华
网站建设 2026/6/11 1:55:59

终极指南:如何用Bliss Shader为你的Minecraft打造电影级视觉盛宴

终极指南:如何用Bliss Shader为你的Minecraft打造电影级视觉盛宴 【免费下载链接】Bliss-Shader A minecraft shader which is an edit of chocapic v9 项目地址: https://gitcode.com/gh_mirrors/bl/Bliss-Shader 还在为Minecraft方块世界的单调光影感到乏味…

作者头像 李华
网站建设 2026/6/11 1:49:01

MEC任务卸载算法Python实现包:含本地/边缘/协同调度策略与性能测试框架

本文还有配套的精品资源,点击获取 简介:一套开箱即用的移动边缘计算任务卸载算法代码集合,聚焦真实场景下的决策逻辑——支持纯本地执行、单边缘节点卸载、多边缘协同调度三类主流策略,每种策略均提供完整可运行的Python实现。…

作者头像 李华
网站建设 2026/6/11 1:48:21

jfinal cms优化版本:jfinal升至5.2.2,beetl升至3.16.2

jfinal cms发布优化版本,将jfinal和beetl升级为最新版本,分别为5.2.2和3.16.2。该软件功能丰富,支持多站点等多种特性。版本升级详情此版本主要是优化升级,将jfinal升级到最新的5.2.2版本,beetl升级到3.16.2版本。升级…

作者头像 李华
网站建设 2026/6/11 1:48:20

2026智能门锁感应唤醒毫米波雷达解决方案

智能门锁走到 2026 年,人脸识别、指静脉、3D 结构光这几项生物识别技术已经迭代了好几个版本。各家在识别精度和误识率上咬得很紧,参数层面的差距越拉越小。不过坦白讲,这些技术栈解决的都是“认出你是谁”的问题。但是“什么时候该唤醒”——…

作者头像 李华
网站建设 2026/6/11 1:46:35

TradingAgents-CN:多智能体协同的金融决策智能引擎技术解析

TradingAgents-CN:多智能体协同的金融决策智能引擎技术解析 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN 在金融科技快速发展的今天…

作者头像 李华