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

Qt简单离线音乐播放器

有上传本地音乐文件,播放,暂停,拖拉进度条等功能的播放器。

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMediaPlayer>
#include <QFileDialog>
#include <QTime>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);player = new QMediaPlayer(this);// 当播放状态改变时,更新按钮的状态connect(player,&QMediaPlayer::stateChanged,this,&MainWindow::onStateChanged);// 当音乐文件的总时间改变时,更新滑块的范围connect(player, &QMediaPlayer::durationChanged, ui->slider, &QSlider::setMaximum);// 当播放位置改变时,更新滑块的值connect(player, &QMediaPlayer::positionChanged, ui->slider, &QSlider::setValue);// 当滑块的值改变时,设置播放位置connect(ui->slider, &QSlider::valueChanged, player, &QMediaPlayer::setPosition);connect(ui->slider, &QSlider::valueChanged, [this](int value) {// 将滑块的值转换为时间格式,并更新 timelabelQTime time(0, value / 60, value % 60);ui->timelabel->setText(time.toString("mm:ss"));});}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_playButton_clicked()
{//if(player->state() == QMediaPlayer::PlayingState)//{//player->pause();//}else{//player->play();//}player->play();
}void MainWindow::onStateChanged(QMediaPlayer::State state)
{//if(state == QMediaPlayer::PlayingState)//{//ui->playButton->setText("Pause");//}//else//{//ui->playButton->setText("Play");//}
}void MainWindow::on_openAction_triggered()
{QString filename = QFileDialog::getOpenFileName(this, "Open a File", "", "Audio File(*.mp3)");player->setMedia(QUrl::fromLocalFile(filename));player->play();
}void MainWindow::on_pauseButton_clicked()
{player->pause();
}void MainWindow::on_OpenFileButton_clicked()
{on_openAction_triggered();
}void MainWindow::on_slider_actionTriggered(int action)
{}void MainWindow::on_timelabel_linkActivated(const QString &link)
{}

.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QMediaPlayer>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void on_timelabel_linkActivated(const QString &link);void on_playButton_clicked();void on_slider_actionTriggered(int action);void on_pauseButton_clicked();void onStateChanged(QMediaPlayer::State state);void on_openAction_triggered();void on_OpenFileButton_clicked();private:Ui::MainWindow *ui;QMediaPlayer *player;
};
#endif // MAINWINDOW_H

.pro:

QT       += core gui
QT       += multimediagreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += c++11# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0SOURCES += \main.cpp \mainwindow.cppHEADERS += \mainwindow.hFORMS += \mainwindow.ui# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

在这里插入图片描述
在这里插入图片描述

相关文章:

Qt简单离线音乐播放器

有上传本地音乐文件&#xff0c;播放&#xff0c;暂停&#xff0c;拖拉进度条等功能的播放器。 mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include <QMediaPlayer> #include <QFileDialog> #include <QTime&g…...

微信小程序常用的api

基础API&#xff1a; wx.request&#xff1a;用于发起网络请求&#xff0c;支持GET、POST等方式&#xff0c;是获取网络数据的主要手段。wx.showToast&#xff1a;显示消息提示框&#xff0c;通常用于向用户展示操作成功、失败或加载中等状态。wx.showModal&#xff1a;显示模态…...

iOS xib布局

1.多次启动发现启动图和截屏的图片不一致,设置launch storyboard 不能到顶部 https://blog.csdn.net/u011960171/article/details/104053696/ 2.multipiler是比例&#xff0c;需要控制顺序1.视图&#xff0c;2父视图&#xff0c;选择宽度比例&#xff0c;默认是1 3.Aspect R…...

UNI-APP_拨打电话权限如何去掉,访问文件权限关闭

uniapp上架过程中一直提示&#xff1a;允许“app名”拨打电话和管理通话吗&#xff1f; uniapp配置文件&#xff1a;manifest.json “permissionPhoneState” : {“request” : “none”//拨打电话权限关闭 }, “permissionExternalStorage” : {“request” : “none”//访…...

Git知识点汇总表格总结

Git应该是现在各个做开发公司使用最广泛的版本管理工具了&#xff0c;还有一些公司可能用的SVN&#xff0c;不过总体来说&#xff0c;Git绝对是主流&#xff0c;SVN是集中式版本管理&#xff0c;使用起来相对Git更简单&#xff0c;不过功能相对Git也略显简略&#xff0c;Git的优…...

漫谈:C语言 奇葩的指针定义规则

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 C语言的语法很麻拐。 初学者的…...

spring boot中一般如何使用线程池

在Spring Boot中&#xff0c;线程池作为并发编程的核心工具&#xff0c;对于提升应用程序性能、优化资源利用和保证系统稳定性具有重要作用。本文将详细阐述如何在Spring Boot中正确使用线程池&#xff0c;包括配置参数、实例化、任务提交、监控及常见问题处理等环节&#xff0…...

Shader 纹理动画和顶点动画

一、内置变量--时间 要实现动画&#xff0c;我们需要把时间添加到计算当中&#xff0c;让画面可以随着时间变化而变化。在Unity Shader提供了如下关于时间的内置变量以便于在shader中访问时间实现各种动态效果。 名称类型描述_Timefloat4t是自该场景加载开始所经过的时间&…...

使用macof发起MAC地址泛洪攻击

使用macof发起MAC地址泛洪攻击 MAC地址泛洪攻击原理&#xff1a; MAC地址泛洪攻击是一种针对交换机的攻击方式&#xff0c;目的是监听同一局域网中用户的通信数据。交换机的工作核心&#xff1a;端口- MAC地址映射表。这张表记录了交换机每个端口和与之相连的主机MAC地址之间…...

力扣:1979. 找出数组的最大公约数(Java)

目录 题目描述&#xff1a;输入&#xff1a;输出&#xff1a;代码实现&#xff1a; 题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;返回数组中最大数和最小数的 最大公约数 。 两个数的 最大公约数 是能够被两个数整除的最大正整数。 输入&#xff1a; nums [2,5,6…...

电瓶车充电桩:潜藏的暴利行业,简单入门到月入万元!

近几年来&#xff0c;电瓶车凭借其环保、经济特点已成为居民出行的必备工具之一。而促使电瓶车快速普及的原因之一即是电瓶车充电桩的普及。如果留心观察的话&#xff0c;相信大家都可以看出&#xff0c;国内大部分小区都已安装了充电桩设备&#xff0c;电瓶车充电桩已实现了大…...

mac监听 linux服务器性能可视化(Grafana+Promethus+Node_exporter)

Grafana和promethus(普罗米修斯)的安装和使用 监控系统的Prometheus类似于一个注册中心&#xff0c;我们可以只需要配置一个Prometheus,而在其他服务器&#xff0c;只需要安装node_exporter,它们的数据流转就是通过exporter采集数据信息&#xff0c;然后告诉prometheus它的位置…...

【负载均衡在线OJ项目日记】运行功能开发

目录 前言 运行功能开发分析 获取子进程运行信息 程序运行资源限制 运行功能开发代码 前言 上篇文章我们对客户端服务器传来的临时文件进行编译&#xff0c;这篇文章主要对编译成功的代码在我们的服务器运行这块功能的开发。 运行功能开发分析 在运行功能开发之前我们默…...

Qt | QLineEdit 类(行编辑器)

01、上节回顾 Qt | QComboBox(组合框)02、QLineEdit 1、QLineEdit 类是 QWidget 类的直接子类,该类实现了一个单行的 输入部件,即行编辑器,见右图 2、验证器(QValidator 类)和输入掩码简介:主要作用是验证用户输入的字符是否符合验证器 的要求,即限制对用户的输入,比…...

Mamba结构的Demo源码解读

文章目录 前言一、mamba结构构建辅助函数解读1、dataclass方法解读2、Norm归一化LayerNormRMSNormRMSNorm源码 3、nn.Parameter方法解读 二、mamba原理二、mamba模型构建1、主函数入口源码解读2、Mamba类源码解读 三、ResidualBlock的mamba结构源码解读四、MambaBlock构成Resid…...

金仓面对面 | 人大金仓×安硕信息共话金融信用风险管理数字化转型之道

金仓面对面 在数字化浪潮的推动下&#xff0c;人大金仓携手行业先锋&#xff0c;共同开启一场关于创新与转型的思想盛宴——金仓面对面。这不仅是一场对话&#xff0c;更是一次智慧的火花碰撞&#xff0c;一次行业数字化转型洞察的深度挖掘。 行业精英汇聚&#xff1a;我们荣幸…...

JavaScript值类型与引用类型的区别

值类型&#xff08;原始类型&#xff09; 值类型包括&#xff1a;undefined、null、boolean、number、string、symbol 和 bigint。这些类型的特点是&#xff1a; 存储位置&#xff1a;值类型的数据直接存储在栈&#xff08;Stack&#xff09;中。复制行为&#xff1a;当一个值…...

每日一博 - 闲聊架构设计中的多级缓存设计

文章目录 方法论概述客户端缓存应用层缓存服务层缓存缓存设计的注意事项总结 思维导图戳这里 方法论概述 从客户端到服务层&#xff0c;缓存的应用广泛而重要。通过合理的缓存设计&#xff0c;能够有效地提高系统的性能并降低延迟。 客户端缓存 在客户端层面&#xff0c;浏览…...

轻松实现MySQL集群配置:一主一从与一主多从教程

在数据驱动的时代&#xff0c;数据库的高可用性和负载分散成为了维护在线服务稳定运行的关键。MySQL作为世界上最流行的开源关系型数据库管理系统&#xff0c;其集群配置是任何DBA或开发人员必须掌握的技能之一。本文将为您详细介绍如何轻松配置MySQL的一主一从和一主多从集群&…...

Leetcode刷题-(41~45)-Java

算法是码农的基本功&#xff0c;也是各个大厂必考察的重点&#xff0c;让我们一起坚持写题吧。 遇事不决&#xff0c;可问春风&#xff0c;春风不语&#xff0c;即是本心。 我们在我们能力范围内&#xff0c;做好我们该做的事&#xff0c;然后相信一切都事最好的安排就可以啦…...

MASA模组汉化包完整教程:让Minecraft模组界面瞬间变中文的终极指南

MASA模组汉化包完整教程&#xff1a;让Minecraft模组界面瞬间变中文的终极指南 【免费下载链接】masa-mods-chinese 一个masa mods的汉化资源包 项目地址: https://gitcode.com/gh_mirrors/ma/masa-mods-chinese 还在为Minecraft中MASA模组复杂的英文界面而头疼吗&#…...

树莓派驱动MAX31855热电偶传感器:从SPI通信到高精度测温实践

1. 项目概述&#xff1a;从热电偶到Python读数在嵌入式开发、工业监控或者任何需要精确测温的项目里&#xff0c;热电偶&#xff08;Thermocouple&#xff09;往往是工程师们的首选传感器。它结构简单、皮实耐用&#xff0c;而且测温范围能从零下两百多度一直覆盖到上千度&…...

Linux驱动调试利器:debugfs接口设计与实现详解

1. 项目概述&#xff1a;为什么我们需要debugfs&#xff1f;在Linux内核驱动的开发与调试过程中&#xff0c;我们常常面临一个核心痛点&#xff1a;如何在不重启系统、不重新编译驱动、甚至不借助复杂外部工具的情况下&#xff0c;实时地窥探驱动内部的状态、修改关键参数&…...

Gerbv:你的免费PCB设计“翻译官“,让Gerber文件开口说话

Gerbv&#xff1a;你的免费PCB设计"翻译官"&#xff0c;让Gerber文件开口说话 【免费下载链接】gerbv Maintained fork of gerbv, carrying mostly bugfixes 项目地址: https://gitcode.com/gh_mirrors/ge/gerbv 想象一下&#xff0c;当你拿到一份PCB设计文件…...

Windows上安装Android应用的终极指南:告别模拟器,开启全新跨平台体验

Windows上安装Android应用的终极指南&#xff1a;告别模拟器&#xff0c;开启全新跨平台体验 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾在Windows电脑上渴…...

解决Claude Code频繁封号问题转向Taotoken稳定服务的配置指南

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 解决Claude Code频繁封号问题转向Taotoken稳定服务的配置指南 如果你在使用 Claude Code 时遇到了账号不稳定或 Token 额度受限的问…...

一键封装成EXE!让Windows命令行像Linux一样直接敲‘binwalk’的懒人方案

一键封装成EXE&#xff01;让Windows命令行像Linux一样直接敲‘binwalk’的懒人方案 每次打开命令行都要先cd到Python的Scripts目录才能使用binwalk&#xff0c;这种操作对于效率至上的开发者来说简直是时间杀手。本文将带你用PyInstaller打造一个开箱即用的binwalk.exe&#…...

逆向分析效率翻倍:深度挖掘IDA Pro的‘隐藏’窗口——段视图、签名、类型库的实战价值

逆向分析效率翻倍&#xff1a;深度挖掘IDA Pro的‘隐藏’窗口实战指南 在逆向工程领域&#xff0c;IDA Pro无疑是众多安全研究员和分析师的首选工具。然而&#xff0c;许多中级用户往往只停留在反汇编窗口的基础操作上&#xff0c;忽视了那些隐藏在界面角落却能极大提升分析效率…...

Cadence 16.6 新手避坑指南:从零搭建PCB设计库(OLB、焊盘、封装分类管理)

Cadence 16.6 新手避坑指南&#xff1a;从零搭建PCB设计库&#xff08;OLB、焊盘、封装分类管理&#xff09; 刚接触Cadence 16.6的PCB设计新手&#xff0c;往往会在库文件管理这个环节栽跟头。面对Allegro、Design Entry CIS和Pad Designer这三个核心工具&#xff0c;如何系统…...

基于本体论的技能知识图谱:从理论到工程实践

1. 项目概述&#xff1a;当技能遇上本体论最近在整理个人知识库和团队技能矩阵时&#xff0c;我遇到了一个老生常谈的难题&#xff1a;如何用一种结构化的、机器可读的方式&#xff0c;清晰地定义和关联“技能”这个概念&#xff1f;我们通常用Excel表格、标签云或者简单的列表…...