用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写一个简单的音乐播放器(二):增加界面(开始和暂停音乐) 的相关文章

  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现

随机推荐

  • 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播放音乐 但是一个对于一个音乐播放器来说 这是远远不够的 至少我们需要有一个简单的用户操作界面吧 让用户开业