Qt是一个跨平台框架,通常用作图形工具包,它不仅创建CLI应用程序中非常有用。演示结合 Qt 3D 渲染和 Qt Quick 2 元素。
Qt是一个跨平台框架,通常用作图形工具包,它不仅创建CLI应用程序中非常有用。而且它也可以在三种主要的台式机操作系统以及移动操作系统(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式设备,Android(Necessitas)和iOS的端口上运行。现在我们为你提供了免费的试用版。
下载Qt6最新试用版
Qt组件推荐:
- QtitanRibbon| 下载试用: 遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,致力于为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。
- QtitanChart | 下载试用 :是一个C ++库,代表一组控件,这些控件使您可以快速地为应用程序提供漂亮而丰富的图表。并且支持所有主要的桌面
Qt 3D:音频可视化器示例
演示结合 Qt 3D 渲染和 Qt Quick 2 元素。

Audio Visualizer 演示了如何实现将 Qt 3D 渲染与 Qt Quick 2D 元素结合使用的应用程序。该示例使用媒体播放器播放音乐,并将音乐的大小可视化为动画条。
运行示例
要从Qt Creator运行示例,请打开欢迎模式并从示例中选择示例。有关更多信息,请访问构建和运行示例。
Qt 快速二维实现
audio-visualizer-qml/main.qml示例中的 Qt Quick ImplementationMediaPlayer用于播放音频内容。
MediaPlayer { id: mediaPlayer autoPlay: true volume: 0.5 source: "qrc:/music/tiltshifted_lost_neon_sun.mp3"
播放器由playButton和 c{stopButton} 控制。基于单击的按钮state的mainview更改。
3D 内容是使用Scene3D类型呈现的。Audio Visualizer 的状态保持在mainview. 它被传递给visualizer酒吧动画所需要的。
Scene3D { anchors.fill: parent Visualizer { id: visualizer animationState: mainview.state numberOfBars: 120 barRotationTimeMs: 8160 // 68 ms per bar }}
Qt 3D 实现
该示例的 3D 元素是在audio-visualizer-qml/Visualizer.qml. 相机设置在固定位置,以从正确的角度显示可视化条。
Camera { id: camera projectionType: CameraLens.PerspectiveProjection fieldOfView: 45 aspectRatio: 1820 / 1080 nearPlane: 0.1 farPlane: 1000.0 position: Qt.vector3d(0.014, 0.956, 2.178) upVector: Qt.vector3d(0.0, 1.0, 0.0) viewCenter: Qt.vector3d(0.0, 0.7, 0.0)}
ANodeInstantiator用于创建可视化音乐幅度的条形。
// BarsCuboidMesh { id: barMesh xExtent: 0.1 yExtent: 0.1 zExtent: 0.1}NodeInstantiator { id: collection property int maxCount: parent.numberOfBars model: maxCount delegate: BarEntity { id: cubicEntity entityMesh: barMesh rotationTimeMs: sceneRoot.barRotationTimeMs entityIndex: index entityCount: sceneRoot.numberOfBars entityAnimationsState: animationState magnitude: 0 }}
该visualizer还包含一个Entity显示进度。这个元素有一个曲线形状的 格,它在一个级别上旋转以显示基于播放曲目的持续时间的进度。
// ProgressMesh { id: progressMesh source: "qrc:/meshes/progressbar.obj"}Transform { id: progressTransform property real defaultStartAngle: -90 property real progressAngle: defaultStartAngle rotationY: progressAngle}Entity { property Material progressMaterial: PhongMaterial { ambient: "#80C342" diffuse: "black" } components: [progressMesh, progressMaterial, progressTransform]}
在audio-visualizer-qml/BarEntity.qml有旋转酒吧和更改栏颜色动画。钢筋按照环形形式在水平面上旋转。同时,条的颜色是动画的。
QQ2.NumberAnimation { id: angleAnimation target: angleTransform property: "barAngle" duration: rotationTimeMs loops: QQ2.Animation.Infinite running: true from: startAngle to: 360 + startAngle}QQ2.SequentialAnimation on barColor { id: barColorAnimations running: false QQ2.ColorAnimation { from: lowColor to: highColor duration: animationDuration } QQ2.PauseAnimation { duration: animationDuration } QQ2.ColorAnimation { from: highColor to: lowColor duration: animationDuration }}
每个小节的大小是从基于正在播放的曲目的单独 .raw 文件中读取的。当条形围绕环旋转时,高度会缩放以突出显示当前播放的位置。一整轮旋转后,将为该条获取一个新值。
====================================================
想要了解或购买Qt正版授权的朋友,欢迎咨询官方客服
Qt技术交流群现已开通,QQ搜索群 “765444821”或者扫描下方二维码即可加入


标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!