基于Qt模仿网易云音乐界面,目前只实现了部分界面,后续继续完善改造。
部分代码:
#ifndef MYSQLDATAMGR_H
#define MYSQLDATAMGR_H
#include <QObject>
#include <QDebug>
#include <QSqlDatabase>
#include <QSqlQuery>
/**
* @brief The MySqlDataMgr class
* 数据库管理类
*/
class MySqlDataMgr
{
private:
MySqlDataMgr();
MySqlDataMgr(const MySqlDataMgr&);
~MySqlDataMgr();
public:
static MySqlDataMgr* getInstance();
bool InitSqlDatabase();
private:
static MySqlDataMgr* m_pSqlDataMgr;
};
#endif // MYSQLDATAMGR_H
#include "MySqlDataMgr.h"
MySqlDataMgr* MySqlDataMgr::m_pSqlDataMgr=nullptr;
MySqlDataMgr::MySqlDataMgr()
{
}
MySqlDataMgr::~MySqlDataMgr()
{
if(m_pSqlDataMgr)
{
delete m_pSqlDataMgr;
}
}
MySqlDataMgr *MySqlDataMgr::getInstance()
{
if(m_pSqlDataMgr==nullptr)
{
return new MySqlDataMgr();
}
return m_pSqlDataMgr;
}
bool MySqlDataMgr::InitSqlDatabase()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");
db.setPort(3306);
db.setUserName("root");
db.setPassword("123123");
db.setDatabaseName("musicmgr");
if(!db.open())
{
qDebug()<<"Mysql Error! "<<endl;
return false;
}
return true;
}
#ifndef RIGHTMENU_H
#define RIGHTMENU_H
#include <QWidget>
#include <QPushButton>
#include <QLayout>
#include <QLabel>
#include <QComboBox>
/**
*右侧菜单栏窗口
*/
namespace Ui {
class RightMenu;
}
enum RightType{
FindMusic,//发现音乐信号
Video,//视频信号
Friend,//朋友信号
Streaming,//直播信号
FM,//私人FM信号
LocalMusic,//本地音乐信号
DownLoad,//下载管理信号
Storage,//我的音乐云盘信号
Radio,//我的电台信号
Collect,//我的收藏信号
LoveMusic,//我喜欢的音乐信号
NewMusic,//新
};
class RightMenu : public QWidget
{
Q_OBJECT
public:
explicit RightMenu(QWidget *parent = nullptr);
~RightMenu();
private:
void InitMenu();//初始化菜单
void addIconAndTextButton();//添加按钮
void addButton();//加入按钮
QPushButton* CreateButton(const QString& sImage,const QString& sText);
signals:
void ClickRightType(RightType RightMenuType);//发现音乐信号
private:
QVBoxLayout* pHLayout;
QVBoxLayout* pButtonGroupLayout;
QVBoxLayout* pTopButtonLayout;
bool isCliek=true;
private:
Ui::RightMenu *ui;
};
#endif // RIGHTMENU_H
#include "RightMenu.h"
#include "ui_RightMenu.h"
RightMenu::RightMenu(QWidget *parent) :
QWidget(parent),
ui(new Ui::RightMenu)
{
ui->setupUi(this);
InitMenu();
}
RightMenu::~RightMenu()
{
delete ui;
}
void RightMenu::InitMenu()
{
addIconAndTextButton();
addButton();
pHLayout = new QVBoxLayout();
pHLayout->addLayout(pTopButtonLayout);
pHLayout->addLayout(pButtonGroupLayout);
pHLayout->setSpacing(10);
this->setLayout(pHLayout);
}
void RightMenu::addButton()
{
pTopButtonLayout = new QVBoxLayout();
QPushButton *pFindMusic = new QPushButton(u8"发现音乐");
connect(pFindMusic,&QPushButton::clicked,[=](){
emit ClickRightType(FindMusic);
});
QPushButton *pVideo = new QPushButton(u8"视频");
connect(pVideo,&QPushButton::clicked,[=](){
emit ClickRightType(Video);
});
QPushButton *pFriend = new QPushButton(u8"朋友");
connect(pFriend,&QPushButton::clicked,[=](){
emit ClickRightType(Friend);
});
QPushButton *pStreaming = new QPushButton(u8"直播");
connect(pStreaming,&QPushButton::clicked,[=](){
emit ClickRightType(Streaming);
});
QPushButton *pFM = new QPushButton(u8"私人FM");
connect(pFM,&QPushButton::clicked,[=](){
emit ClickRightType(FM);
});
pTopButtonLayout->addWidget(pFindMusic);
pTopButtonLayout->addWidget(pVideo);
pTopButtonLayout->addWidget(pFriend);
pTopButtonLayout->addWidget(pStreaming);
pTopButtonLayout->addWidget(pFM);
pTopButtonLayout->setSpacing(0);
}
void RightMenu::addIconAndTextButton()
{
pButtonGroupLayout = new QVBoxLayout();
QPushButton *pLocalMusic = CreateButton(u8":/Icons/Music.png",u8"本地音乐");
connect(pLocalMusic,&QPushButton::clicked,[=](){
emit ClickRightType(LocalMusic);
});
QPushButton *pDownLoad = CreateButton(u8":/Icons/download.png",u8"下载管理");
connect(pDownLoad,&QPushButton::clicked,[=](){
emit ClickRightType(DownLoad);
});
QPushButton *pStorage = CreateButton(u8":/Icons/storage.png",u8"我的音乐云盘");
connect(pStorage,&QPushButton::clicked,[=](){
emit ClickRightType(Storage);
});
QPushButton *pRadio = CreateButton(u8":/Icons/Radio.png",u8"我的电台");
connect(pRadio,&QPushButton::clicked,[=](){
emit ClickRightType(Radio);
});
QPushButton *pCollect = CreateButton(u8":/Icons/collect.png",u8"我的收藏");
connect(pCollect,&QPushButton::clicked,[=](){
emit ClickRightType(Collect);
});
QLabel* pLel = new QLabel(u8"我的音乐");
pLel->setFixedHeight(20);
pButtonGroupLayout->addWidget(pLel);
pButtonGroupLayout->addWidget(pLocalMusic);
pButtonGroupLayout->addWidget(pDownLoad);
pButtonGroupLayout->addWidget(pStorage);
pButtonGroupLayout->addWidget(pRadio);
pButtonGroupLayout->addWidget(pCollect);
pButtonGroupLayout->setSpacing(0);
QPushButton* pCreateSongList = new QPushButton(u8"创建的歌单");
pCreateSongList->setIcon(QIcon(u8":/Icons/RightArrows.png"));
pCreateSongList->setLayoutDirection(Qt::RightToLeft);
pCreateSongList->setStyleSheet("background-color:rgb(19,112,190,0);border:none;"
"color:#BDBDBD;font-size:15px;height:30;"
"back-ground-origin:content; padding-right:5px;");
pButtonGroupLayout->addWidget(pCreateSongList);
QPushButton* pLoveMusic= new QPushButton(u8"我喜欢的音乐");
pLoveMusic->setIcon(QIcon(u8":/Icons/Love.png"));
pLoveMusic->setLayoutDirection(Qt::LeftToRight);
connect(pLoveMusic,&QPushButton::clicked,[=](){
emit ClickRightType(LoveMusic);
});
QPushButton* pNewMusic= new QPushButton(u8"新");
pNewMusic->setIcon(QIcon(u8":/Icons/New.png"));
pNewMusic->setLayoutDirection(Qt::LeftToRight);
connect(pNewMusic,&QPushButton::clicked,[=](){
emit ClickRightType(NewMusic);
});
pButtonGroupLayout->addWidget(pLoveMusic);
pButtonGroupLayout->addWidget(pNewMusic);
connect(pCreateSongList,&QPushButton::clicked,[=]()mutable
{
if(isCliek){
pLoveMusic->hide();
pNewMusic->hide();
pCreateSongList->setIcon(QIcon(u8":/Icons/RightArrows.png"));
pCreateSongList->setLayoutDirection(Qt::RightToLeft);
isCliek=false;
return;
}
if(!isCliek)
{
pLoveMusic->show();
pNewMusic->show();
pCreateSongList->setIcon(QIcon(u8":/Icons/BottomArrows.png"));
pCreateSongList->setLayoutDirection(Qt::RightToLeft);
isCliek=true;
return;
}
});
}
QPushButton *RightMenu::CreateButton(const QString &sImage, const QString &sText)
{
QPushButton* pButton = new QPushButton();
pButton->setIcon(QIcon(sImage));
pButton->setText(sText);
pButton->setLayoutDirection(Qt::LeftToRight);
return pButton;
}
QQ:1594932770