为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

MP3源代码

2017-09-19 20页 doc 68KB 52阅读

用户头像

is_601191

暂无简介

举报
MP3源代码#ifndef MYMP3_H #define MYMP3_H #include #include #include "mywidget.h" #include "tabdialog.h" #include #include #include #include #include #include #include #include using namespace std; class Mymp3 : public QWidget {     Q_OBJECT public:     Mymp3(QWidge...
MP3源代码
#ifndef MYMP3_H #define MYMP3_H #include #include #include "mywidget.h" #include "tabdialog.h" #include #include #include #include #include #include #include #include using namespace std; class Mymp3 : public QWidget {     Q_OBJECT public:     Mymp3(QWidget *parent = 0);     ~Mymp3(); private:         tabDialog *tab;         QGroupBox *groupBox;         QPushButton *picBtn;    //ͼƬ         QLabel *bottmpic;         QLabel *songnameLabel;  //         QSlider *timeSlider;    //ʱ         QLCDNumber *timeLed;         QPushButton *lastBtn;         QPushButton *playBtn;         QPushButton *nextBtn;         audioBtn *audiobtn;         audioSlider *audioslider;         QHBoxLayout *H2;         int time;  //ʱ         int cur_time; //ǰʱ         QTimer *timer;    //ѭʱ         int state;    //״̬־1Ϊ  2Ϊͣ 0Ϊʼ״̬         bool audio_bool; //־trueΪ  falseΪ         int music_time(QString);    //ʱ public slots:         void lastBtn_slot();        //һ         void playBtn_slot();//šͣ         void nextBtn_slot();    //һ         void set_audio(int value); //         void audioslider_show();    //ʾ         void audioslider_Hidden();  //         void set_time();    //ʾʱ         void audioBtn_slot();         void play_music_slot(QString); signals:         void change_music(QString); }; #endif // MYMP3_H #include "mymp3.h" #include using namespace std; Mymp3::Mymp3(QWidget *parent) :     QWidget(parent) {     setWindowTitle("QQMusic");     setWindowIcon(QIcon("./image/logo.png"));     setAutoFillBackground(true);     QPalette mainpalette=this->palette();     mainpalette.setBrush(QPalette::Window,QBrush(QPixmap("./image/backgroud.png").scaled(this->size(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));     this->setPalette(mainpalette);     QIcon icon;     picBtn=new QPushButton;     QPixmap picpix("./image/pic.png");     picpix.scaled(QSize(80,80),Qt::IgnoreAspectRatio,Qt::SmoothTransformation);     icon.addPixmap(picpix);     picBtn->setIcon(icon);     picBtn->setFixedSize(picpix.size());     picBtn->setIconSize(QSize(80,80));     picBtn->setMask(picpix.mask());     songnameLabel=new QLabel("jksdfkjsadbjfsbdf");     timeSlider=new QSlider(Qt::Horizontal);     timeLed=new QLCDNumber();     timeLed->setSegmentStyle(QLCDNumber::Flat);     timeLed->setFrameShape(QFrame::NoFrame);     QPalette p=timeLed->palette();     p.setColor(QPalette::Normal,QPalette::WindowText,QColor(Qt::lightGray));     timeLed->setPalette(p);     QHBoxLayout *H=new QHBoxLayout();     H->addWidget(timeSlider);     H->addWidget(timeLed);     lastBtn=new QPushButton();     QPixmap lastpix("./image/last.png");     icon.addPixmap(lastpix);     lastBtn->setIcon(icon);     lastBtn->setIconSize(QSize(30,26));     lastBtn->setFixedSize(lastpix.size());     lastBtn->setMask(lastpix.mask());     playBtn=new QPushButton();     QPixmap playpix("./image/play.png");     icon.addPixmap(playpix);     playBtn->setIcon(icon);     playBtn->setIconSize(QSize(30,26));     playBtn->setFixedSize(playpix.size());     playBtn->setMask(playpix.mask());     nextBtn=new QPushButton();     QPixmap nextpix("./image/next.png");     icon.addPixmap(nextpix);     nextBtn->setIcon(icon);     nextBtn->setIconSize(QSize(30,26));     nextBtn->setFixedSize(nextpix.size());     nextBtn->setMask(nextpix.mask());     audiobtn=new audioBtn();     QPixmap audiopix("./image/audio.png");     icon.addPixmap(audiopix);     audiobtn->setIcon(icon);     audiobtn->setIconSize(QSize(30,26));     audiobtn->setFixedSize(audiopix.size());     audiobtn->setMask(audiopix.mask());     bottmpic=new QLabel(this);     QPixmap bottmpix("./image/bottm.png");     bottmpic->setPixmap(bottmpix);     bottmpic->setGeometry(QRect(0,370,300,130));     audioslider=new audioSlider(Qt::Horizontal);     audioslider->setRange(0,100);     audioslider->setHidden(false);     H2=new QHBoxLayout();     H2->addWidget(lastBtn);     H2->addWidget(playBtn);     H2->addWidget(nextBtn);     H2->addWidget(audiobtn);     H2->addWidget(audioslider);     H2->setSpacing(1);     QVBoxLayout *v=new QVBoxLayout();     v->addWidget(songnameLabel);     v->addLayout(H);     v->addLayout(H2);     v->setSpacing(3);     tab=new tabDialog;     QGridLayout *top_H=new QGridLayout();     top_H->addWidget(picBtn,0,0);     top_H->addLayout(v,0,1);      //tab->setGeometry(QRect(10,100,280,600));     top_H->addWidget(tab,1,0,1,2);     setLayout(top_H);     timeLed->display("00:00");     set_audio(50);     audio_bool=false;     timer=new QTimer(this);     connect(audiobtn,SIGNAL(mouseEnter()),this,SLOT(audioslider_show()));     connect(audiobtn,SIGNAL(mouseLeave()),this,SLOT(audioslider_Hidden()));     connect(audioslider,SIGNAL(mouseenter()),this,SLOT(audioslider_show()));     connect(audioslider,SIGNAL(mouseleave()),this,SLOT(audioslider_Hidden()));     connect(tab->historyMusic_widget,SIGNAL(change_music(QString)),this,SLOT(play_music_slot(QString)));     connect(tab->myMusic_widget->stack,SIGNAL(change_music(QString)),this,SLOT(play_music_slot(QString)));     connect(this,SIGNAL(change_music(QString)),this,SLOT(play_music_slot(QString)));     connect(timer,SIGNAL(timeout()),this,SLOT(set_time()));     connect(audioslider,SIGNAL(valueChanged(int)),this,SLOT(set_audio(int)));     connect(lastBtn,SIGNAL(clicked()),this,SLOT(lastBtn_slot()));     connect(nextBtn,SIGNAL(clicked()),this,SLOT(nextBtn_slot()));     connect(playBtn,SIGNAL(clicked()),this,SLOT(playBtn_slot()));     connect(audiobtn,SIGNAL(clicked()),this,SLOT(audioBtn_slot()));     system("killall -9 madplay");     state=0; } Mymp3::~Mymp3() {   system("killall -9 madplay"); } void Mymp3::audioslider_show() {     audioslider->setHidden(false);     setFocusProxy(audioslider); } void Mymp3::audioslider_Hidden() {     audioslider->setHidden(true);     H2->addStretch(); } void Mymp3::lastBtn_slot() {     system("killall -9 madplay");     int i=tab->myMusic_widget->stack->stack->currentIndex(); cout<<"i="<myMusic_widget->stack->list1->currentRow()==0)         {             tab->myMusic_widget->stack->list1->setCurrentRow(tab->myMusic_widget->stack->list1->count()-1);             emit change_music(tab->myMusic_widget->stack->filenamelist1[tab->myMusic_widget->stack->list1->currentRow()]);         }         else         {             tab->myMusic_widget->stack->list1->setCurrentRow(tab->myMusic_widget->stack->list1->currentRow()-1);             emit change_music(tab->myMusic_widget->stack->filenamelist1[tab->myMusic_widget->stack->list1->currentRow()]);         }     }     else     {         if(tab->myMusic_widget->stack->list2->currentRow()==0)         {             tab->myMusic_widget->stack->list2->setCurrentRow(tab->myMusic_widget->stack->list2->count()-1);             emit change_music(tab->myMusic_widget->stack->filenamelist2[tab->myMusic_widget->stack->list1->currentRow()]);         }         else         {             tab->myMusic_widget->stack->list2->setCurrentRow(tab->myMusic_widget->stack->list2->currentRow()-1);             emit change_music(tab->myMusic_widget->stack->filenamelist2[tab->myMusic_widget->stack->list2->currentRow()]);         }     } } void Mymp3::playBtn_slot() {     QIcon icon;     if(state==1)     {         system("killall -STOP madplay &");         QPixmap playpix("./image/stop.png");         icon.addPixmap(playpix);         playBtn->setIcon(playpix);         timer->stop();         delete timer;         state=2;     }     else if(state==2)     {         system("killall -CONT madplay &");         QPixmap playpix("./image/play.png");         icon.addPixmap(playpix);         playBtn->setIcon(playpix);         timer=new QTimer(this);         connect(timer,SIGNAL(timeout()),this,SLOT(set_time()));         timer->start(1000);           state=1;     }     else if(state==0)     {         emit change_music(tab->myMusic_widget->stack->filenamelist1[0]);         tab->myMusic_widget->stack->list1->setCurrentRow(0);     } } void Mymp3::play_music_slot(QString music_filename) {     state=1;     timeLed->display("00:00");     system("killall -9 madplay");     int pid;     delete timer;     time=music_time(music_filename);     timeSlider->setRange(0,time);     songnameLabel->setText(music_filename.section("/",-1));     cur_time=0;     timer=new QTimer(this);     connect(timer,SIGNAL(timeout()),this,SLOT(set_time()));     timer->start(1000);     pid=fork();     if(pid==0)     {         execlp("madplay","madplay","-v",music_filename.toLocal8Bit().data(),"&",NULL);     } } void Mymp3::set_time() {     QTime t(0,0,0);     QTime t_t=t.addSecs(cur_time);     QString str_time=t_t.toString("mm:ss");     timeLed->display(str_time);     timeSlider->setValue(cur_time);     cur_time++;     if(cur_time>time+2)         nextBtn_slot(); } void Mymp3::nextBtn_slot() {     system("killall -9 madplay");     int i=tab->myMusic_widget->stack->stack->currentIndex();     if(i==0)     {         if(tab->myMusic_widget->stack->list1->currentRow()==(tab->myMusic_widget->stack->list1->count()-1))         {             tab->myMusic_widget->stack->list1->setCurrentRow(0);             emit change_music(tab->myMusic_widget->stack->filenamelist1[0]);         }         else         {             tab->myMusic_widget->stack->list1->setCurrentRow(tab->myMusic_widget->stack->list1->currentRow()+1);             emit change_music(tab->myMusic_widget->stack->filenamelist1[tab->myMusic_widget->stack->list1->currentRow()]);         }     }     else     {         if(tab->myMusic_widget->stack->list2->currentRow()==(tab->myMusic_widget->stack->list2->count()-1))         {             tab->myMusic_widget->stack->list2->setCurrentRow(0);             emit change_music(tab->myMusic_widget->stack->filenamelist2[0]);         }         else         {             tab->myMusic_widget->stack->list2->setCurrentRow(tab->myMusic_widget->stack->list2->currentRow()+1);             emit change_music(tab->myMusic_widget->stack->filenamelist2[tab->myMusic_widget->stack->list2->currentRow()]);         }     } } int Mymp3::music_time(QString music_filename) {     int time;     int end_pos;     int rate=0;     int Frame_head;     char data_Frame[4];     ifstream in(music_filename.toLatin1().data(),ios::binary);     in.seekg(0,ios::end);     end_pos=in.tellg();     in.seekg(0,ios::beg);     in.read((char*)&Frame_head,(sizeof(int)));     in.close();     sprintf(data_Frame,"%x",Frame_head);     switch(data_Frame[2]+1)     {     case '6':         rate=192;         break;     case '4':         rate=128;         break;     case '8':         rate=256;         break;     case 'a':         rate=320;         break;     case '3':         rate=96;         break;     case '7':         rate=224;     break;     default:;     }     time=(int)(end_pos/1024*8/(rate));     cout<<"size is "<value());         audiobtn->setIcon(QIcon("./image/audio.png"));         audio_bool=false;     }     else     {         set_audio(0);         audiobtn->setIcon(QIcon("./image/noaudio.png"));         audio_bool=true;     } } #ifndef MYWIDGET_H #define MYWIDGET_H #include class audioBtn:public QPushButton {     Q_OBJECT     public:     audioBtn(QWidget *parent=0);     signals:         void mouseEnter();         void mouseLeave();     private:         void enterEvent(QEvent *);         void leaveEvent(QEvent *); }; class audioSlider:public QSlider {     Q_OBJECT     public:     audioSlider(Qt::Orientation orientation);     void enterEvent(QEvent*);     void leaveEvent(QEvent *);     signals:     void mouseenter();     void mouseleave(); }; #endif // MYWIDGET_H #ifndef MYWIDGET_CPP #define MYWIDGET_CPP #include "mywidget.h" audioBtn::audioBtn(QWidget *parent):QPushButton(parent) { } void audioBtn::enterEvent(QEvent *e) {     emit mouseEnter(); } void audioBtn::leaveEvent(QEvent *e) {     emit mouseLeave(); } audioSlider::audioSlider(Qt::Orientation orientation):QSlider(orientation) { } void audioSlider::enterEvent(QEvent*) {     emit mouseenter(); } void audioSlider::leaveEvent(QEvent *) {     emit mouseleave(); } #endif // MYWIDGET_CPP #ifndef TABDIALOG_H #define TABDIALOG_H #include #include class stack_Music:public QFrame {       Q_OBJECT     public:     stack_Music(QWidget *parnet=0);     QStackedWidget *stack;     QListWidget *list1;     QListWidget *list2;     int state;     QList filenamelist1;     QList filenamelist2;     public slots:         void add_music();         void del_music();         void Music_item_clicked(QListWidgetItem *item);     signals:         void change_music(QString music_name ); }; class myMusic:public QWidget {     public:         myMusic(QWidget *parent=0);         QSplitter *splitter_myMusic;         QPushButton *add;         QPushButton *del;         stack_Music *stack; }; class historyMusic:public QWidget {     Q_OBJECT     public:         historyMusic(QWidget *parent=0);       QListWidget *musicList;         QList filenamelist;     signals:         void change_music(QString);     public slots:         void add_music_history(QString);         void musicList_clicked(QListWidgetItem*); }; class tabDialog : public QWidget {     Q_OBJECT public:     tabDialog(QWidget *parent = 0);     QTabWidget *tabWidget;     historyMusic *historyMusic_widget;     myMusic *myMusic_widget; signals: }; #endif // TABDIALOG_H #include "tabdialog.h" historyMusic::historyMusic(QWidget *parent):QWidget(parent) {     musicList=new QListWidget(this);     musicList->setMinimumSize(QSize(275,255));     connect(musicList,SIGNAL(itemDoubleClicked(QListWidgetItem*)),this,SLOT(musicList_clicked(QListWidgetItem*))); } void historyMusic::add_music_history(QString str) {     musicList->addItem(str.section("/",-1));     filenamelist.append(str); } void historyMusic::musicList_clicked(QListWidgetItem* item) {     int i=0;     while(item->text()!=filenamelist[i].section("/",-1))         i++;     emit change_music(filenamelist[i]); } myMusic::myMusic(QWidget *parent):QWidget(parent) {     resize(280,250);     splitter_myMusic=new QSplitter(Qt::Horizontal,0);     splitter_myMusic->setOpaqueResize(false);     splitter_myMusic->setHandleWidth(1);     splitter_myMusic->setStretchFactor(0,0);     splitter_myMusic->setMaximumWidth(280);     QListWidget *myMusic_list=new QListWidget(splitter_myMusic);     myMusic_list->setMaximumSize(50,230);     myMusic_list->insertItem(0,"my love");     myMusic_list->insertItem(1,"ofen");     stack=new stack_Music(splitter_myMusic);     connect(myMusic_list,SIGNAL(currentRowChanged(int)),stack->stack,SLOT(setCurrentIndex(int)));     QIcon icon;     add=new QPushButton();     QPixmap addpix("./image/add.png");     icon.addPixmap(addpix);     add->setIcon(icon);     add->setIconSize(QSize(25,25));     add->setFixedSize(addpix.size());     add->setMask(addpix.mask());     del=new QPushButton();     QPixmap delpix("./image/delete.png");     icon.addPixmap(delpix);     del->setIcon(icon);     del->setIconSize(QSize(25,25));     del->setFixedSize(delpix.size());     del->setMask(delpix.mask());     connect(add,SIGNAL(clicked()),stack,SLOT(add_music()));     connect(del,SIGNAL(clicked()),stack,SLOT(del_music()));     QHBoxLayout *h=new QHBoxLayout;     h->addWidget(add);     h->addWidget(del);     h->addStretch();     QVBoxLayout *v=new QVBoxLayout;     v->addWidget(splitter_myMusic);     v->addLayout(h);     setLayout(v); } tabDialog::tabDialog(QWidget *parent) :     QWidget(parent) {     tabWidget=new QTabWidget(this);     historyMusic_widget=new historyMusic;     myMusic_widget=new myMusic;     tabWidget->addTab(myMusic_widget,"myMusic");     tabWidget->addTab(historyMusic_widget,"HistoryMusic");     connect(myMusic_widget->stack,SIGNAL(change_music(QString)),historyMusic_widget,SLOT(add_music_history(QString))); } stack_Music::stack_Music(QWidget *parent):QFrame(parent) {     setMaximumWidth(210);     stack=new QStackedWidget(this);     list1=new QListWidget;     list1->setMaximumSize(195,200);     list2=new QListWidget;     list1->addItem("123.mp3");     list1->addItem("1.mp3");     list1->addItem("2.mp3");     filenamelist1.append("/music/123.mp3");     filenamelist1.append("/music/1.mp3");     filenamelist1.append("/music/2.mp3");     list2->setMaximumSize(195,200);     stack->addWidget(list1);     stack->addWidget(list2);   /* add=new QPushButton;     add->setIcon(QIcon("./image/add.png"));     del=new QPushButton;     del->setIcon(QIcon("./image/delete.png"));*/   /* QHBoxLayout *h=new QHBoxLayout();     h->addStretch();     h->addWidget(add);     h->addWidget(del);*/     QVBoxLayout *v=new QVBoxLayout(this);     v->addWidget(stack);     //v->addLayout(h);     connect(list1,SIGNAL(itemDoubleClicked(QListWidgetItem*)),this,SLOT(Music_item_clicked(QListWidgetItem*)));     connect(list2,SIGNAL(itemDoubleClicked(QListWidgetItem*)),this,SLOT(Music_item_clicked(QListWidgetItem*))); } void stack_Music::add_music() {     QString filename;     state=stack->currentIndex();     filename=QFileDialog::getOpenFileName(this,"add Music","/","mp3 file (*.mp3)");     if(stack->currentIndex()==0)     {         filenamelist1.append(filename);         list1->addItem(filename.section("/",-1));     }     if(stack->currentIndex()==1)     {         filenamelist2.append(filename);         list2->addItem(filename.section("/",-1));     } } void stack_Music::del_music() {     if(stack->currentIndex()==0)     {         QListWidgetItem *item=list1->takeItem(list1->currentRow());         filenamelist1.removeAt(list1->currentRow());         delete item;     }     if(stack->currentIndex()==1)     {         QListWidgetItem *item=list2->takeItem(list2->currentRow());         filenamelist2.removeAt(list2->currentRow());         delete item;     } } void stack_Music::Music_item_clicked(QListWidgetItem *item) {     int i=0;     if(stack->currentIndex()==0)     {         while(item->text()!=filenamelist1[i].section("/",-1)){             i++;}         emit change_music(filenamelist1[i]);     }     if(stack->currentIndex()==1)     {         i=0;         while(item->text()!=filenamelist2[i].section("/",-1))             i++;         emit change_music(filenamelist2[i]);     } }
/
本文档为【MP3源代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索