用Qt写一个简单的音乐播放器(二):增加界面(开始和暂停音乐)

2023-11-07

一、前言

用Qt写一个简单的音乐播放器(一):使用QMediaPlayer播放音乐中,我们已经知道如何去使用QMediaPlayer播放音乐。但是一个对于一个音乐播放器来说,这是远远不够的,至少我们需要有一个简单的用户操作界面吧,让用户开业选择开始和暂停吧。那么让我们开始吧。

二、按钮

如图所示,双击mainwindow.ui,进入设计界面。
在这里插入图片描述
如图所示,Qt的设计界面就长这样。
在这里插入图片描述
如图所示,在其中button这一栏中,可以看到有很多不同的Button(按钮)。
只是简单的播放暂停我们选择PushButton就可以了,其他的,大家可以自己研究一下。
在这里插入图片描述
如图所示,选中PushButton,将其拖拽到界面中。
在这里插入图片描述
然后双击我们界面上的PushButton按钮,将其重命名,Play(播放),Pause(暂停)。
在这里插入图片描述
选择play按钮,我们可以看到,图中右侧,为了方便我们编程,我们将其名字进行修改:btnPlay(其中,btn为button的缩写,Play为按钮的功能)。同样另一个按钮我们也修改为:btnPause。
在这里插入图片描述
在这里插入图片描述

三、代码

界面我们大概就设计好了,那么代码该怎么做呢?
首先先把在(一)里注释的代码解开,把我们写的删掉。

#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

在这里插入图片描述
双击mainwindow.h,如图所示,加上圈起来的两行代码
在这里插入图片描述
然后,打开设计界面,选中Play,右键,点击转到槽。
在这里插入图片描述
选择点击clicked后,点击OK。
在这里插入图片描述
这时候代码自动跳转到mainwindow.cpp,并出现on_btnPlay_clicked()函数。这个函数中就代表着,点下Play按钮后,触发的事件。
在这里插入图片描述
在on_btnPlay_clicked()中加入以下代码,如图所示

void MainWindow::on_btnPlay_clicked()
{
    if(QMediaPlayer:: PausedState != m_mediaPlayer.state()){
        m_mediaPlayer.setVolume(50);
        m_mediaPlayer.setMedia(QUrl::fromLocalFile("D:\\music\\BIGBANG - LOSER (Live).mp3"));
    }
    m_mediaPlayer.play();
}

在这里插入图片描述
如法炮制,暂停按钮,双击mainwindow.ui,pause按钮,我们也转到槽,并且在on_btnPause_clicked()中增加如下代码

void MainWindow::on_btnPause_clicked()
{
    if(QMediaPlayer:: PlayingState == m_mediaPlayer.state()){
        m_mediaPlayer.pause();
    }
}

在这里插入图片描述

四、使用

如下图所示,点击图中的绿色小三角,程序开始构建。
在这里插入图片描述
出现下图,代表构建完成,
点击Play按钮,音乐播放,
点击Pause按钮,音乐暂停。
在这里插入图片描述

五、拓展

当然,仅有播放和暂停,对于一个音乐播放器来说,还是远远不够的,那么下一篇博客(三)中,增加新的功能。
用Qt写一个简单的音乐播放器(三):增加界面(播放跳转与音量控制)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用Qt写一个简单的音乐播放器(二):增加界面(开始和暂停音乐) 的相关文章

  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • 无法使用已与其底层 RCW 分离的 COM 对象。在 oledb 中

    我收到此错误 但我不知道我做错了什么 下面的代码在backrgroundworker中 将异常详细信息复制到剪贴板 System Runtime InteropServices InvalidComObjectException 未处理 通
  • Qt-Qlist 检查包含自定义类

    有没有办法覆盖加载自定义类的 Qt QList 的比较机制 即在 java 中你只需要重写一个比较方法 我有一个带有我的自定义类模型的 QList QList
  • 如何在列表框项目之间画一条线

    我希望能够用水平线分隔列表框中的每个项目 这只是我用于绘制项目的一些代码 private void symptomsList DrawItem object sender System Windows Forms DrawItemEvent
  • QML 连接:不推荐使用连接中隐式定义的 onFoo 属性

    升级到 Qt 5 15 时收到以下错误消息 QML Connections Implicitly defined onFoo properties in Connections are deprecated Use this syntax
  • WPF 中的调度程序和异步等待

    我正在尝试学习 WPF C 中的异步编程 但我陷入了异步编程和使用调度程序的困境 它们是不同的还是在相同的场景中使用 我愿意简短地回答这个问题 以免含糊不清 因为我知道我混淆了 WPF 中的概念和函数 但还不足以在功能上正确使用它 我在这里
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • Qt moc 在头文件中实现?

    是否可以告诉 Qt MOC 我想声明该类并在单个文件中实现它 而不是将它们拆分为 h 和 cpp 文件 如果要在 cpp 文件中声明并实现 QObject 子类 则必须手动包含 moc 文件 例如 文件main cpp struct Sub
  • 如何将图像路径保存到Live Tile的WP8本地文件夹

    我正在更新我的 Windows Phone 应用程序以使用新的 WP8 文件存储 API 本地文件夹 而不是 WP7 API 隔离存储文件 旧的工作方法 这是我如何成功地将图像保存到 共享 ShellContent文件夹使用隔离存储文件方法
  • C# 中的递归自定义配置

    我正在尝试创建一个遵循以下递归结构的自定义配置部分
  • 从路径中获取文件夹名称

    我有一些路c server folderName1 another name something another folder 我如何从那里提取最后一个文件夹名称 我尝试了几件事 但没有成功 我只是不想寻找最后的 然后就去休息了 Thank
  • for循环中计数器变量的范围是多少?

    我在 Visual Studio 2008 中收到以下错误 Error 1 A local variable named i cannot be declared in this scope because it would give a
  • 当操作繁忙时,表单不执行任何操作(冻结)

    我有一个使用 C 的 WinForms 应用程序 我尝试从文件中读取一些数据并将其插入数据表中 当此操作很忙时 我的表单冻结并且无法移动它 有谁知道我该如何解决这个问题 这可能是因为您在 UI 线程上执行了操作 将文件和数据库操作移至另一个
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • 需要哪个版本的 Visual C++ 运行时库?

    microsoft 的最新 vcredist 2010 版 是否包含以前的版本 2008 SP1 和 2005 SP1 还是我需要安装全部 3 个版本 谢谢 你需要所有这些
  • 控制到达非 void 函数末尾 -wreturn-type

    这是查找四个数字中的最大值的代码 include
  • 如何让Gtk+窗口背景透明?

    我想让 Gtk 窗口的背景透明 以便只有窗口中的小部件可见 我找到了一些教程 http mikehearn wordpress com 2006 03 26 gtk windows with alpha channels https web
  • 为什么 C# Math.Ceiling 向下舍入?

    我今天过得很艰难 但有些事情不太对劲 在我的 C 代码中 我有这样的内容 Math Ceiling decimal this TotalRecordCount this PageSize Where int TotalRecordCount
  • 为什么我收到“找不到编译动态表达式所需的一种或多种类型。”?

    我有一个已更新的项目 NET 3 5 MVC v2 到 NET 4 0 MVC v3 当我尝试使用或设置时编译出现错误 ViewBag Title财产 找不到编译动态表达式所需的一种或多种类型 您是否缺少对 Microsoft CSharp
  • x86 上未对齐的指针

    有人可以提供一个示例 将指针从一种类型转换为另一种类型由于未对齐而失败吗 在评论中这个答案 https stackoverflow com questions 544928 reading integer size bytes from a

随机推荐

  • python导入机制及importlib模块

    文章目录 写在篇前 import 关键字 先导概念 namespace scope Module Packages module packages regular package namespace package importlib Lo
  • 描述子距离种类

    1 hausdorff距离 微分动力系统原理 这本书里有介绍 Hausdorff距离是描述两组点集之间相似程度的一种量度 它是两个点集之间距离的一种定义形式 假设有两组集合A a1 ap B b1 bq 则这两个点集合之间的Hausdorf
  • TLS/SSL协议

    1 TLS协议的工作原理 TSL设计目的 身份验证 保密性 完整性 Record记录协议 对称加密 Handshake握手协议 验证通讯双方的身份 交换加解密的安全套件 协商加密参数 2 对称加密的工作原理 1 XOR与填充 明文P和密钥K
  • 官网解读-fastcgi_param

    Syntax fastcgi param parameter value if not empty Default Context http server location Sets a parameter that should be p
  • iOS中的数据持久化方式

    iOS中的数据持久化方式 基本上有以下四种 属性列表 对象归档 SQLite3和Core Data 1 属性列表 涉及到的主要类 NSUserDefaults 一般 NSUserDefaults standardUserDefaults 就
  • 教程--从零开始使用BiSeNet(语义分割)网络训练自己的数据集

    引言 为了从图片分割出我们想要的特征 我们采用BiSeNet作为分割模型 并且在自己制作的数据集上进行训练测试 注 训练是在linux环境下的 Win下训练可能会有点问题 一 下载BiSeNet网络的安装包 1 下载地址 GitHub Co
  • matlab 非均匀体素下采样

    目录 一 非均匀下采样 二 代码实现 三 结果展示 1 原始点云 2 采样结果 四 参考链接 一 非均匀下采样 ptCloudOut pcdownsample ptCloudIn nonuniformGridSample maxNumPoi
  • java线程池(四):ForkJoinPool的使用及基本原理

    文章目录 1 ForkJoinPool是什么 1 1 分治法 1 2 工作窃取 work stealing 2 简单使用 2 1 不带返回值的计算 2 2 带返回值的计算 3 ForkJoin源码注释 3 1 类注释 3 2 关于原理的注释
  • 软件测试用例有五十个以上的,软件测试大牛都是这样写测试用例的,你get到了嘛?...

    1 用于语句覆盖的基路径法 基路径法保证设计出的测试用例 使程序的每一个可执行语句至少执行一次 即实现语句覆盖 基路径法是理论与应用脱节的典型 基本上没有应用价值 读者稍作了解即可 不必理解和掌握 基路径法步骤如下 1 画出程序的控制流图
  • C语言函数函数(斐波那契函数)

    作者 几冬雪来 时间 2023年2月2日 内容 C语言函数函数讲解之斐波那契函数篇 目录 前言 斐波那契函数 1 什么是斐波那契函数 2 斐波那契函数怎么实现 3 如何用C语言书写斐波那契函数 4 什么时候使用递归 什么时候使用非递归 结尾
  • uniapp开发微信小程序通过文件流下载文件

    uni downloadFile url xx 请求地址 header token token token 获取 success res gt if res statusCode 200 var filePath res tempFileP
  • 谈一下为什么程序员不要进外包吧

    从2016年毕业到现在入行也有4年多 待过几家公司 外包和非外包都待过 个人感觉 外包和非外包的区别在于后期维护和迭代升级这个阶段上 一般外包都是开发通过验收或者根本就没有通过验收当你把项目推动到某一个阶段之后你就要进入下一个项目组 这样让
  • 什么是编译?

    编译 compilation compile 1 利用编译程序从源语言编写的源程序产生目标程序的过程 2 用编译程序产生目标程序的动作 编译就是把高级语言变成计算机可以识别的2进制语言 计算机只认识1和0 编译程序把人们熟悉的语言换成2进制
  • lambda表达式java项目常用_LAMBDA表达式常用 (全)

    1 select语句 books Select p gt new p Title p UnitPrice p Author 需用匿名方式 2 where语句 books Where p gt p UnitPrice 100 p Title
  • 从七个方面,面试BAT大厂高级工程师,纯干货!

    转载注明 https blog csdn net WantFlyDaCheng article details 100078782 一 框架是重点 但别让人感觉你只会山寨别人的代码 二 别单纯看单机版的框架 适当了解些分布式 三 数据库方面
  • 安装 WebStorm 后的一些基本配置

    前言 在安装完 WebStorm 后我们需要配置一些东西来加快我们的开发效率 下面给大家列出一些基本的配置 1 设置 WebStorm 标签下的默认缩进 问题 在 WebStorm 的 html 文件中 默认在标签下的子标签是没有进行缩进处
  • 深入理解JVM(四)-执行引擎

    本文章是根据 深入理解Java虚拟机 一书 并参考网上其他文档进行的系统性的和简单容易理解的方式进行的整理 一 执行引擎 执行引擎是Java最核心的组成部分之一 具有执行代码的能力 如下图所示 1 运行时栈帧结构 栈帧是用于支持虚拟机进行方
  • mysql版本号怎么看_查看Mysql版本号的五种不同方法介绍

    查看mysql数据库版本 可以使用命令行模式进入mysql会看到最开始的提示符 也可以在命令行中使用status查看 又可以使用系统函数等 以下是查看mysql版本信息的详细介绍 1 使用命令行模式进入mysql会看到最开始的提示符 You
  • 巧妙利用kickstart实现自动化安装全get

    本文转载链接 https blog csdn net Nanjing bokebi article details 103035331 运用kickstart服务创建应答文件 实现自动化运维 运维自动化发展历程及技术应用 理解kicksta
  • 用Qt写一个简单的音乐播放器(二):增加界面(开始和暂停音乐)

    一 前言 在用Qt写一个简单的音乐播放器 一 使用QMediaPlayer播放音乐中 我们已经知道如何去使用QMediaPlayer播放音乐 但是一个对于一个音乐播放器来说 这是远远不够的 至少我们需要有一个简单的用户操作界面吧 让用户开业