昨天历经千辛万苦,配置好了VS 2010中的Qt环境(包括Qt for VS插件),今天决定浅浅地品味一下将两者结合进行编程的魅力。

上网查了一些资料,学习了一些基础知识,决定做一个简单的音乐播放器,主要用到Phonon多媒体框架。

Phonon的工作机制:

使用MediaObject来管理MediaSource即源文件,通过Path连接到AudioOutput,最后是由AudioOutput将数据发送到相关物理设备。

1、新建一个工程:文件->新建->项目:

选择Qt Application,本人命名为Player1;

*注意在此过程一定要把Phonon库选上:

2、创建好项目以后,可以看到VS自动生成了很多文件,先不用管它们:

1)双击Form目录下的player1.ui,进行控件的添加:

说明,从上到下分别是:

一个ListWeight(名:listWidget),

一个VerticalLayout(名:verticalLayout),

四个PushButton(名:addBtn,playBtn,pauseBtn,stopBtn)。

当然,各种属性可以自行设置及更改(颜色,大小等);

2)此时,需要的控件已添加完毕,可以保存,并回到VS主页对其进行右击->编译,ui_player1.h文件得到完善;

3、接下来就是各控件对应功能的实现,并进行信号与槽的连接:

1)先来看头文件"player1.h",类的名称在项目创建过程中也可以进行更改(默认为:项目名称+Class):

#ifndef PLAYER1_H
#define PLAYER1_H
#include <QMainWindow>
#include <Phonon>
#include <QList>
#include "ui_player1.h" class Player1Class : public QMainWindow
{
Q_OBJECT
public:
Player1Class(QWidget *parent = 0);
~Player1Class();
protected:
void changeEvent(QEvent *e);
private slots:
void addFiles();
void playFile();
void pauseFile();
void stopFile();
private:
Ui::Player1Class *ui;
Phonon::MediaObject *mediaObject;
Phonon::AudioOutput *audioOutput;
Phonon::SeekSlider *seekSlider;
QList<Phonon::MediaSource> sourceList;//播放列表
};
#endif //PLAYER1_H

  2)源文件"player1.cpp"

#include <QtGui>
#include "player1.h"
#include "ui_player1.h" Player1Class::Player1Class(QWidget *parent) :
QMainWindow(parent),ui(new Ui::Player1Class)
{
ui->setupUi(this);
connect(this->ui->addBtn, SIGNAL(clicked()), this, SLOT(addFiles()));
connect(this->ui->playBtn, SIGNAL(clicked()), this, SLOT(playFile()));
connect(this->ui->pauseBtn, SIGNAL(clicked()), this, SLOT(pauseFile()));
connect(this->ui->stopBtn, SIGNAL(clicked()), this, SLOT(stopFile()));
mediaObject = new Phonon::MediaObject(this);
audioOutput = new Phonon::AudioOutput(this);
seekSlider = new Phonon::SeekSlider(this);
Phonon::createPath(mediaObject, audioOutput);
seekSlider->setMediaObject(mediaObject);
this->ui->verticalLayout->addWidget(seekSlider);
} Player1Class::~Player1Class()
{
delete ui;
} void Player1Class::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type())
{
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
} void Player1Class::addFiles()
{
QStringList files = QFileDialog::getOpenFileNames(this, tr("Select Files to play"));
QString file;
foreach(file, files)
{
this->ui->listWidget->addItem(file);
sourceList.append(file);
}
} void Player1Class::playFile()
{
if(sourceList.isEmpty())
{
QMessageBox::information(this, tr("no music files"), tr("no files to play"));
return ;
}
mediaObject->setQueue(sourceList);
mediaObject->play();
this->ui->playBtn->setEnabled(false);
this->ui->pauseBtn->setEnabled(true);
} void Player1Class::pauseFile()
{
mediaObject->pause();
this->ui->pauseBtn->setEnabled(false);
this->ui->playBtn->setEnabled(true);
} void Player1Class::stopFile()
{
mediaObject->stop();
this->ui->pauseBtn->setEnabled(true);
this->ui->playBtn->setEnabled(true);
}

  3)主函数文件"main.cpp"

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

  4、至此,便可以进行整个项目的编译、运行,结果为:

一首张宇的"给你们"先给大家。谢谢!

  

简单的音乐播放器(VS 2010 + Qt 4.8.5)的更多相关文章

  1. swift3.0 简单直播和简单网络音乐播放器

    本项目采用swift3.0所写,适配iOS9.0+,所有界面均采用代码布局. 第一个tab写的是简单直播,传统MVC模式,第二个tab写的是简单网络音乐播放器.传说MVVM模式(至于血统是否纯正我就不 ...

  2. 用PHP+H5+Boostrap做简单的音乐播放器(进阶版)

    前言:之前做了一个音乐播放器(纯前端),意外的受欢迎,然后有人建议我把后台一起做了,正好也想学习后台,所以学了两天php(不要吐槽我的速度,慢工出细活嘛~)然后在之前的基础上也又完善了一些功能,所以这 ...

  3. 用H5+Boostrap做简单的音乐播放器

    前言:这个是综合一下我最近在学的东西做的小Demo,到实际使用还有距离,但是用来练手巩固知识点还是不错的,最近在二刷JS书和Boostrap.css的源码,做完这个Demo也算是暂告一段落,接下来是j ...

  4. 使用Service组件实现简单的音乐播放器功能 --Android基础

    1.本例利用Service实现简单的音乐播放功能,下面是效果图.(点击开始播放开启服务,音乐播放,点击“停止播放”关闭服务,音乐停止播放.) 2.核心代码: MusicService.java: pa ...

  5. Android课程---简单的音乐播放器

    第一个:用Activity实现 activity_music_play1.xml <?xml version="1.0" encoding="utf-8" ...

  6. HTML5+CSS3+jquery实现简单的音乐播放器

    ...最近天热的,感觉就像煎饼...然后别人在把妹子的时候,只有偶们这帮苦逼的程序员在那边撸代码...我日哦! 然后今天晒的是偶早年写的一个播放器...看上去是不是很有感觉的样子!一番宝物,Lisa唱 ...

  7. Android——用Activity和Service实现简单的音乐播放器

    一.只用Activity 容易出现问题 xml <?xml version="1.0" encoding="utf-8"?> <LinearL ...

  8. Android开发6:Service的使用(简单音乐播放器的实现)

    前言 啦啦啦~各位好久不见啦~博主最近比较忙,而且最近一次实验也是刚刚结束~ 好了不废话了,直接进入我们这次的内容~ 在这篇博文里我们将学习Service(服务)的相关知识,学会使用 Service ...

  9. Android实现简单音乐播放器(MediaPlayer)

    Android实现简单音乐播放器(MediaPlayer) 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个简单的音乐播放器,要求功能 ...

随机推荐

  1. 烂泥:CentOS安装及配置TFTP服务器

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 为什么要学习有关TFTP服务器的安装及配置呢?主要是为了后续学习有关linux系统的无人值守安装做准备. TFTP简单文件传输协议,使用UDP的69端口 ...

  2. ASP.NET5 MVC6入门教学之一(自己动手)

    等待微软开源大动作已经好几年了,终于ASP.NET 5发布了.今天给新手们写一个简单地教程,教你认识一下ASP.NET5 MVC6 1.安装kvm 首先,你需要以管理员权限打开cmd,执行如下的脚本: ...

  3. mod_rewrite

    一.简介 http://www.07fly.net/a/wangluobiancheng/Phpbiancheng/201501/58393.html   二.实现原理:       只有当用户的WE ...

  4. php浮点型以及精度问题

    浮点型(也叫浮点数 float,双精度数 double 或实数 real) 浮点数的形式表示: LNUM [0-9]+DNUM ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9 ...

  5. python 邮件发送 脚本

    import smtplib from email.header import Header from email.mime.text import MIMEText from_addr = 'XXX ...

  6. 广搜+打表 POJ 1426 Find The Multiple

    POJ 1426   Find The Multiple Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 25734   Ac ...

  7. 边工作边刷题:70天一遍leetcode: day 85-1

    Inorder Successor in BST 要点:这题要注意的是如果不是BST,没法从树结构上从root向那边找p,只能遍历.而根据BST,可以只走正确方向 如果不检查right子树,可以从ro ...

  8. IT技术博客收藏

    1. coolshell.cn 特点: 每篇都是精品 2. 云风 特点: 3. 阮一峰的博客 特点:高精深 3. offbye涛声依旧-全端技术博客 特点: android的开发技术比较多,非常值得一 ...

  9. [Usaco2010 OPen]Triangle Counting 数三角形

    [Usaco2010 OPen]Triangle Counting 数三角形 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 394  Solved: 1 ...

  10. 2666 Accept Ratio(打表AC)

    2666 Accept Ratio  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description 某陈痴迷 ...