热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Qt音乐播放器 2.0版全新升级

本次发布的Qt音乐播放器2.0版本在用户界面方面进行了细致优化,提升了整体的视觉效果和用户体验。尽管核心功能与1.0版本保持一致,但界面的改进使得操作更加直观便捷,为用户带来了更为流畅的使用体验。此外,我们还对部分细节进行了微调,以确保软件的稳定性和性能得到进一步提升。

  呃……反正这篇博客我是本不打算写的,这次的音乐播放器没什么大的变化,主要是在界面上稍微做了些改进,代码是照搬v1.0的,不过这次加了换肤(这个是班门弄斧了些哈),不过话说回来,也是自己辛辛苦苦自己组装的音乐播放器吧,没有窃取别人家的劳动成果,我感觉这个还算的上是一个让我欣慰的原因,一向是剃头挑子-一头热的我,不知道这次能坚持多久,只能说声走一步算一步了。甭废话了,放代码:


widget.h


#include"widget.h"

#include"ui_widget.h"

#include

Widget::Widget(QWidget*parent):

QWidget(parent),

ui(newUi::Widget)

{

ui->setupUi(this);

player=newQMediaPlayer(this);

list=newQMediaPlaylist;

QDirdir("E:/音乐");

foreach(QFileInfoinfo,dir.entryInfoList())

{

if(info.exists())

{

list->addMedia(QUrl(info.absoluteFilePath()));

ui->show->addItem(info.fileName());

}

}

ui->V->setRange(0,100);

list->setCurrentIndex(1);

player->setPlaylist(list);

player->setVolume(50);

connect(ui->V,SIGNAL(valueChanged(int)),player,SLOT(setVolume(int)));

intwidth=this->width();

QToolButton*minButton=newQToolButton(this);

QToolButton*closeButton=newQToolButton(this);

connect(closeButton,SIGNAL(clicked(bool)),this,SLOT(on_closeButton_clicked()));

connect(minButton,SIGNAL(clicked(bool)),this,SLOT(on_minButton_clicked()));

QPixmapminPix=style()->standardPixmap(QStyle::SP_TitleBarUnshadeButton);

QPixmapclosePix=style()->standardPixmap(QStyle::SP_TitleBarCloseButton);

minButton->setIcon(minPix);

closeButton->setIcon(closePix);

minButton->setGeometry(width-46,5,20,20);

closeButton->setGeometry(width-25,5,20,20);

minButton->setToolTip(tr("换肤"));

closeButton->setToolTip(tr("关闭"));

minButton->setStyleSheet("background-color:transparent;");

closeButton->setStyleSheet("background-color:transparent;");

ui->num->setText("已找到"+QString::number(ui->show->count(),10)+"首音乐");

player->setVolume(25);

ui->V->setValue(25);

ui->V->accessibleDescription();

connect(ui->V,SIGNAL(valueChanged(int)),player,SLOT(setVolume(int)));

connect(ui->show,SIGNAL(clicked(QModelIndex)),this,SLOT(toplay(QModelIndex)));

}

Widget::~Widget()

{

deleteui;

}

voidWidget::on_Prvious_clicked()

{

list->previous();

player->play();

ui->show->autoFillBackground();

}

voidWidget::on_Play_clicked()

{

if(ui->Play->text()=="播放")

{

player->play();

ui->Play->setText("暂停");

}

else

{

player->pause();

ui->Play->setText("播放");

}

}

voidWidget::on_Next_clicked()

{

list->next();

player->play();

}

voidWidget::mousePressEvent(QMouseEvent*event)

{

if(event->button()==Qt::LeftButton)

{

mouse_press=true;

move_point=event->pos();//鼠标相对于窗体的位置(或者使用event->globalPos()-this->pos())

}

}

voidWidget::mouseMoveEvent(QMouseEvent*event)

{

if(mouse_press)//若鼠标左键被按下

{

QPointmove_pos=event->globalPos();//鼠标相对于屏幕的位置

this->move(move_pos-move_point);//移动主窗体位置

}

}

voidWidget::mouseReleaseEvent(QMouseEvent*event)

{

mouse_press=false;//设置鼠标为未被按下

}

voidWidget::on_closeButton_clicked()

{

this->close();

}

voidWidget::on_minButton_clicked()

{

staticinti=0;

i++;

QPalettep;

QPixmap*map;

switch(i%4){

case0:

map=newQPixmap(":/picture/001.jpg");

break;

case1:

map=newQPixmap(":/picture/002.jpg");

break;

case2:

map=newQPixmap(":/picture/003.jpg");

break;

case3:

map=newQPixmap(":/picture/004.jpg");

break;

default:

break;

}

p.setBrush(QPalette::Window,QBrush(*map));

this->setPalette(p);

}

voidWidget::toplay(QModelIndexx)

{

list->setCurrentIndex(x.row());

player->play();

}

main.cpp


#include"widget.h"

#include

intmain(intargc,char*argv[])

{

QApplicationa(argc,argv);

Widgetw;

w.setWindowFlags(Qt::FramelessWindowHint);

w.setWindowTitle("MusicBox");

w.setAutoFillBackground(true);

QPalettep;

QPixmappixmap("E:/照片/壁纸/002.jpg");

p.setBrush(QPalette::Window,QBrush(pixmap));

w.setPalette(p);

QPixmappixmap1(":/picture/MP3.ico");

QIconpicture(pixmap1);

w.setWindowIcon(picture);

w.show();

returna.exec();

}


widget.h


#ifndefWIDGET_H

#defineWIDGET_H

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

namespaceUi{

classWidget;

}

classWidget:publicQWidget

{

Q_OBJECT

public:

explicitWidget(QWidget*parent=0);

voidmouseReleaseEvent(QMouseEvent*event);

voidmouseMoveEvent(QMouseEvent*event);

voidmousePressEvent(QMouseEvent*event);

~Widget();

privateslots:

voidtoplay(QModelIndexx);

voidon_Prvious_clicked();

voidon_Play_clicked();

voidon_Next_clicked();

voidon_minButton_clicked();

voidon_closeButton_clicked();

private:

Ui::Widget*ui;

QMediaPlayer*player;

QMediaPlaylist*list;

QPointmove_point;//移动的距离

boolmouse_press;//鼠标按下

};

#endif//WIDGET_H



推荐阅读
  • 本文详细介绍了 iBatis.NET 中的 Iterate 元素,它用于遍历集合并重复生成每个项目的主体内容。通过该元素,可以实现类似于 foreach 的功能,尽管 iBatis.NET 并未直接提供 foreach 标签。 ... [详细]
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • 本文探讨了在C++中如何有效地清空输入缓冲区,确保程序只处理最近的输入并丢弃多余的输入。我们将介绍一种不阻塞的方法,并提供一个具体的实现方案。 ... [详细]
  • 丽江客栈选择问题
    本文介绍了一道经典的算法题,题目涉及在丽江河边的n家特色客栈中选择住宿方案。两位游客希望住在色调相同的两家客栈,并在晚上选择一家最低消费不超过p元的咖啡店小聚。我们将详细探讨如何计算满足条件的住宿方案总数。 ... [详细]
  • Qt QTableView 内嵌控件的实现方法
    本文详细介绍了在 Qt QTableView 中嵌入控件的多种方法,包括使用 QItemDelegate、setIndexWidget 和 setIndexWidget 结合布局管理器。每种方法都有其适用场景和优缺点。 ... [详细]
  • 本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 本文将详细探讨 Java 中提供的不可变集合(如 `Collections.unmodifiableXXX`)和同步集合(如 `Collections.synchronizedXXX`)的实现原理及使用方法,帮助开发者更好地理解和应用这些工具。 ... [详细]
  • 本文介绍了在Android项目中实现时间轴效果的方法,通过自定义ListView的Item布局和适配器逻辑,实现了动态显示和隐藏时间标签的功能。文中详细描述了布局文件、适配器代码以及时间格式化工具类的具体实现。 ... [详细]
  • 优化JavaScript中的多条件判断逻辑
    本文探讨了在JavaScript中遇到复杂逻辑判断时,如何通过不同的方法优化if/else或switch语句,以提高代码的可读性和可维护性。 ... [详细]
  • 本文介绍了一种在Java中实现自然排序的方法,通过自定义比较器来处理包含数字的字符串,确保数字部分按照数值大小进行正确排序。 ... [详细]
  • 本文将探讨从ASP.NET 1.1到2.0期间编译系统的重要变革。通过对比两个版本的即时编译模型,我们将揭示2.0版本中引入的新特性和改进之处。 ... [详细]
  • 本文探讨了如何在无向图中寻找一条从指定起点出发,确保不会连续两次访问同一条边的情况下,获得最大成本路径的方法。 ... [详细]
  • 对象自省自省在计算机编程领域里,是指在运行时判断一个对象的类型和能力。dir能够返回一个列表,列举了一个对象所拥有的属性和方法。my_list[ ... [详细]
author-avatar
好人木庄子mzz
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有