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

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

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

1.多界面切换

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

QT简单音乐播放器(多界面来回切换、自定义界面,音乐播放)_第1张图片

QT简单音乐播放器(多界面来回切换、自定义界面,音乐播放)_第2张图片

    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)));
    //按键的槽
    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因为隐藏了默认的系统窗体后窗口不能移动,这时需要自定义窗口可移动。

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

 
  
 
  
 
  
 
  
 
  
 
  
 
  
 
  
 
  
 
  
 
  
 
  
 
 

你可能感兴趣的:(QT)