QT简单音乐播放器(多界面来回切换、自定义界面,音乐播放)

时间:2021-04-15 10:15:44

本来想做一个高仿网易云的播放器,由于自己能力和时间有限,只是完成了一些简单的功能。

1.多界面之间来回切换;2.自定义界面,包括自定义最小化、自定义关闭、定义窗口可移动,以及按键效果。3.最重要的播放功能。

1.多界面切换

由按键切换界面,一个按键控制一个界面的显示。

QT简单音乐播放器(多界面来回切换、自定义界面,音乐播放)

QT简单音乐播放器(多界面来回切换、自定义界面,音乐播放)

    QStackedWidget *stack = new QStackedWidget(this);
//初始化子界面和加入stack
m_findMusicForm = new FindMusicForm();
stack->addWidget(m_findMusicForm);

m_privateFMFrom = new PrivateFMForm();
stack->addWidget(m_privateFMFrom);

m_findMvForm = new FindMVForm();
stack->addWidget(m_findMvForm);

m_friendForm = new FriendForm();
stack->addWidget(m_friendForm);

m_localMusicForm = new LocalMusicForm();
stack->addWidget(m_localMusicForm);

m_downManageForm =new DownManageForm();
stack->addWidget(m_downManageForm);

m_musicYunFileForm = new MusicYunFileForm();
stack->addWidget(m_musicYunFileForm);

m_mySingerForm = new MySingerForm();
stack->addWidget(m_mySingerForm);

connect(this,SIGNAL(signalActivated(int)),
stack,SLOT(setCurrentIndex(int)));</span>
//按键的槽
void MainWidget::on_tb_main_clicked()
{
emit signalActivated(0);
}
void MainWidget::on_tb_FindMusic_clicked()
{
emit signalActivated(0);
}
void MainWidget::on_tb_PrivateFM_clicked()
{
emit signalActivated(1);
}
void MainWidget::on_tb_MV_clicked()
{
emit signalActivated(2);
}
void MainWidget::on_tb_Friend_clicked()
{
emit signalActivated(3);
}
void MainWidget::on_tb_LocalMusic_clicked()
{
emit signalActivated(4);
}
void MainWidget::on_tb_Download_clicked()
{
emit signalActivated(5);
}
void MainWidget::on_tb_YunFile_clicked()
{
emit signalActivated(6);
}
void MainWidget::on_tb_Singer_clicked()
{
emit signalActivated(7);
}

通过信号和槽机制实现按键按下就切换界面。

2.自定义界面

自定义最小化和关闭功能,方法来自大神“一去丶二三里”。

int width = this->width();//获取界面的宽度
QToolButton *minButton = new QToolButton(this);
QToolButton *closeButton= new QToolButton(this);
//获取最小化、关闭按钮图标
QPixmap minPix = style()->standardPixmap(QStyle::SP_TitleBarMinButton);
QPixmap closePix = 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;");
connect(minButton,SIGNAL(clicked(bool)),this,SLOT(showMinimized()));//最小化
connect(closeButton,SIGNAL(clicked(bool)),this,SLOT(showClose())); //关闭
void</span><span style="color: rgb(192, 192, 192);MainWidget::showClose()
{
this->close();
}

因为隐藏了默认的系统窗体后窗口不能移动,这时需要自定义窗口可移动。

this->setWindowFlags(Qt::FramelessWindowHint);//隐藏默认窗体style
//mainwidget.h
QPoint windowPos; //当前控件位置
QPoint mousePos; //当前窗口位置
QPoint dPos; //移动后的位置
void MainWidget::mousePressEvent(QMouseEvent *)
{//鼠标移动
this->windowPos = this->pos(); // 获得部件当前位置
this->mousePos = event->globalPos(); // 获得鼠标位置
this->dPos = mousePos - windowPos; // 移动后部件所在的位置
}
void MainWidget::mouseMoveEvent(QMouseEvent *event)
{//随鼠标移动窗口移动
this->move(event->globalPos() - this->dPos);
}

3.播放功能
             代码太多,不贴了。上传之后会发下链接。

             http://download.csdn.net/detail/cslqm/9600494