//next一曲
//buf = QString(MoveNext());
connect(ui->pushButton_4,&QPushButton::clicked,this,[=](){
if(songNum == 0)
{
QMessageBox::critical(this,"critical","no songs in songList");
return ;
}
//get filename
buf = QString(MoveNext());
onbuf = buf;
//kill singing song
system("killall -9 madplay");
QString RealfileName = buf.mid(buf.lastIndexOf('/')+1);
ui->lineEdit->setText(RealfileName);
QString str = "madplay "+buf+" &";
const char* strChar = str.toLatin1();
system(strChar);
//qDebug() << "bofangyinyue xiayishou" <
//show lyric
QString lyricfile = buf.mid(0,buf.lastIndexOf('.'));
lyricfile = lyricfile+".txt";
//open lyricfile and show lyric
QFile file(lyricfile);
file.open(QIODevice::ReadOnly);
QByteArray arr;
arr = file.readAll();
ui->textEdit->setText(arr);
//change label Image
int num2 = buf.lastIndexOf('/');
QString pictureName = buf.mid(num2,-1);
pictureName = pictureName.mid(0,pictureName.lastIndexOf('.'));
QString pictureName2 =":Image"+pictureName+ "1.jpg";
pictureName =":Image"+pictureName+ ".jpg";
//reset widget background
QPalette palette;
this->setAutoFillBackground(true);
QPixmap pixmap;
pixmap.load(pictureName);
palette.setBrush(QPalette::Background,QBrush(pixmap));
palette.setBrush(this->backgroundRole(),QBrush(pixmap.scaled(1118,615).scaled(1118,615,Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));
QPainter p3(&pixmap);
p3.setCompositionMode(QPainter::CompositionMode_Source);
p3.drawPixmap(0, 0, pixmap);
p3.setCompositionMode(QPainter::CompositionMode_DestinationIn);
this->setPalette(palette);
//添加标签中的图片
QMovie *myMovie6 = new QMovie(pictureName2);
ui->label_4->setMovie(myMovie6);
ui->label_4->setScaledContents(true);
myMovie6->start();
//set opacity
QGraphicsOpacityEffect* opacityEffect2 = new QGraphicsOpacityEffect;
opacityEffect2->setOpacity(0);
ui->label_6->setGraphicsEffect(opacityEffect2);
});
随机播放键
//set button_7 random play
connect(ui->pushButton_7,&QPushButton::clicked,this,[=](){
//judge error by songNum
if(songNum == 0)
{
QMessageBox::critical(this,"critical","no songs in songList");
return ;
}
system("killall -9 madplay");
//set randInt
int randInt = rand()%10+1;
for(int i = 0 ;i
{
current = current->next;
}
if(current == head)
current = current->next;
buf = current->path;
onbuf = buf;
QString RealfileName = buf.mid(buf.lastIndexOf('/')+1);
ui->lineEdit->setText(RealfileName);
QString str = "madplay "+buf+" &";
const char* strChar = str.toLatin1();
system(strChar);
//show lyric
QString lyricfile = buf.mid(0,buf.lastIndexOf('.'));
lyricfile = lyricfile+".txt";
//open lyricfile and show lyric
QFile file(lyricfile);
file.open(QIODevice::ReadOnly);
QByteArray arr;
arr = file.readAll();
ui->textEdit->setText(arr);
//change label Image
int num2 = buf.lastIndexOf('/');
QString pictureName = buf.mid(num2,-1);
pictureName = pictureName.mid(0,pictureName.lastIndexOf('.'));
QString pictureName2 =":Image"+pictureName+ "1.jpg";
pictureName =":Image"+pictureName+ ".jpg";
//reset widget background
QPalette palette;
this->setAutoFillBackground(true);
QPixmap pixmap;
pixmap.load(pictureName);
palette.setBrush(QPalette::Background,QBrush(pixmap));
palette.setBrush(this->backgroundRole(),QBrush(pixmap.scaled(1118,615).scaled(1118,615,Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));
QPainter p3(&pixmap);
p3.setCompositionMode(QPainter::CompositionMode_Source);
p3.drawPixmap(0, 0, pixmap);
p3.setCompositionMode(QPainter::CompositionMode_DestinationIn);
this->setPalette(palette);
//添加标签中的图片
QMovie *myMovie6 = new QMovie(pictureName2);
ui->label_4->setMovie(myMovie6);
ui->label_4->setScaledContents(true);
myMovie6->start();
//set opacity
QGraphicsOpacityEffect* opacityEffect2 = new QGraphicsOpacityEffect;
opacityEffect2->setOpacity(0);
ui->label_6->setGraphicsEffect(opacityEffect2);
});
void Widget::on_pushButton_5_clicked()
{
//select song
QFileDialog *fdlg = nullptr;
QString fileName = fdlg->getOpenFileName(this,"open File","/home/itcast/Desktop","(*.mp3)");
if(fileName == NULL)
return;
QString RealfileName = fileName.mid(fileName.lastIndexOf('/')+1);
buf = fileName;
//song add to List
const char* rfn = RealfileName.toLatin1();
const char* fn = fileName.toLatin1();
printf("%s %sn",rfn,fn);
bool flag = AddNode(rfn,fn);
if(flag)
{
//add to QListWigetItem
QListWidgetItem *item = new QListWidgetItem(QIcon(":Image/To-like.png"),RealfileName);
ui->listWidget->addItem(item);
item->setTextAlignment(Qt::AlignLeft);
QString number = QString::number(songNum);
ui->lineEdit_2->setText(number);
}else{
QMessageBox::critical(this,"error","overlap exists");
}
}
void Widget::on_listWidget_itemClicked(QListWidgetItem *item)
{
buf = item->text();
buf = "/home/itcast/Desktop/"+buf;
//change current
while(current->path != buf)
{
current = current->next;
}
}
void Widget::on_pushButton_6_clicked()
{
if(songNum == 0)
{
QMessageBox::critical(this,"critical","no songs in songList");
return ;
}
QString RealfileName = buf.mid(buf.lastIndexOf('/')+1);
//foreach to find song to delete
for(int i=0 ;i
{
if(ui->listWidget->item(i)->text() == RealfileName)
{
ui->listWidget->takeItem(i);
songNum--;
//updata songNum
QString number = QString::number(songNum);
ui->lineEdit_2->setText(number);
RemoveNode(RealfileName);
QString filename = "/home/itcast/Desktop/"+RealfileName;
if(onbuf == filename)
{
system("killall -9 madplay");
//reset picture in label_4
QMovie *myMovie = new QMovie(":Image/CD.png");
ui->label_4->setMovie(myMovie);
ui->label_4->setScaledContents(true);
myMovie->start();
ui->lineEdit->setText("");
ui->textEdit->setText("");
//reset widget background
QPalette palette;
this->setAutoFillBackground(true);
QPixmap pixmap;
pixmap.load(":Image/default.jpg");
palette.setBrush(QPalette::Background,QBrush(pixmap));
this->setPalette(palette);
//set opacity
QGraphicsOpacityEffect* opacityEffect2 = new QGraphicsOpacityEffect;
opacityEffect2->setOpacity(1);
ui->label_6->setGraphicsEffect(opacityEffect2);
}
}
}
}
smallwidget.h
#ifndef SMALLWIDGET_H
#define SMALLWIDGET_H
#include
#include
#include
namespace Ui {
class smallwidget;
}
class smallwidget : public QWidget
{
Q_OBJECT
public:
explicit smallwidget(QWidget *parent = nullptr);
~smallwidget();
private slots:
//void on_spinBox_valueChanged(const QString &arg1);
//void keyPressEvent( QKeyEvent *k );
private:
Ui::smallwidget *ui;
};
smallwidget.cpp
#include "smallwidget.h"
#include "ui_smallwidget.h"
smallwidget::smallwidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::smallwidget)
{
ui->setupUi(this);
//set spinBox color
QPalette pal(QColor(255,0,0));
pal.setColor(QPalette::Background,QColor(255,255,255));
ui->spinBox->setPalette(pal);
QPalette pa;
pa.setColor(QPalette::WindowText,Qt::red);
ui->spinBox->setPalette(pa);
//SpinBox connect QSlider
void(QSpinBox:: * spinSignal)(int) = &QSpinBox::valueChanged;
connect(ui->spinBox,spinSignal,ui->horizontalSlider,&QSlider::setValue);
connect(ui->horizontalSlider,&QSlider::valueChanged,ui->spinBox,&QSpinBox::setValue);
//set init value
ui->spinBox->setValue(99);
//click to change volumn
connect(ui->spinBox,spinSignal,this,[=](){
int val = ui->spinBox->value();
QString str = QString::number(val);
QString setVolume = "amixer set Master "+str+"%";
qDebug() <
const char* strChar = setVolume.toLatin1();
system(strChar);
});
}
smallwidget::~smallwidget()
{
delete ui;
}
//next一曲
//buf = QString(MoveNext());
connect(ui->pushButton_4,&QPushButton::clicked,this,[=](){
if(songNum == 0)
{
QMessageBox::critical(this,"critical","no songs in songList");
return ;
}
//get filename
buf = QString(MoveNext());
onbuf = buf;
//kill singing song
system("killall -9 madplay");
QString RealfileName = buf.mid(buf.lastIndexOf('/')+1);
ui->lineEdit->setText(RealfileName);
QString str = "madplay "+buf+" &";
const char* strChar = str.toLatin1();
system(strChar);
//qDebug() << "bofangyinyue xiayishou" <
//show lyric
QString lyricfile = buf.mid(0,buf.lastIndexOf('.'));
lyricfile = lyricfile+".txt";
//open lyricfile and show lyric
QFile file(lyricfile);
file.open(QIODevice::ReadOnly);
QByteArray arr;
arr = file.readAll();
ui->textEdit->setText(arr);
//change label Image
int num2 = buf.lastIndexOf('/');
QString pictureName = buf.mid(num2,-1);
pictureName = pictureName.mid(0,pictureName.lastIndexOf('.'));
QString pictureName2 =":Image"+pictureName+ "1.jpg";
pictureName =":Image"+pictureName+ ".jpg";
//reset widget background
QPalette palette;
this->setAutoFillBackground(true);
QPixmap pixmap;
pixmap.load(pictureName);
palette.setBrush(QPalette::Background,QBrush(pixmap));
palette.setBrush(this->backgroundRole(),QBrush(pixmap.scaled(1118,615).scaled(1118,615,Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));
QPainter p3(&pixmap);
p3.setCompositionMode(QPainter::CompositionMode_Source);
p3.drawPixmap(0, 0, pixmap);
p3.setCompositionMode(QPainter::CompositionMode_DestinationIn);
this->setPalette(palette);
//添加标签中的图片
QMovie *myMovie6 = new QMovie(pictureName2);
ui->label_4->setMovie(myMovie6);
ui->label_4->setScaledContents(true);
myMovie6->start();
//set opacity
QGraphicsOpacityEffect* opacityEffect2 = new QGraphicsOpacityEffect;
opacityEffect2->setOpacity(0);
ui->label_6->setGraphicsEffect(opacityEffect2);
});
随机播放键
//set button_7 random play
connect(ui->pushButton_7,&QPushButton::clicked,this,[=](){
//judge error by songNum
if(songNum == 0)
{
QMessageBox::critical(this,"critical","no songs in songList");
return ;
}
system("killall -9 madplay");
//set randInt
int randInt = rand()%10+1;
for(int i = 0 ;i
{
current = current->next;
}
if(current == head)
current = current->next;
buf = current->path;
onbuf = buf;
QString RealfileName = buf.mid(buf.lastIndexOf('/')+1);
ui->lineEdit->setText(RealfileName);
QString str = "madplay "+buf+" &";
const char* strChar = str.toLatin1();
system(strChar);
//show lyric
QString lyricfile = buf.mid(0,buf.lastIndexOf('.'));
lyricfile = lyricfile+".txt";
//open lyricfile and show lyric
QFile file(lyricfile);
file.open(QIODevice::ReadOnly);
QByteArray arr;
arr = file.readAll();
ui->textEdit->setText(arr);
//change label Image
int num2 = buf.lastIndexOf('/');
QString pictureName = buf.mid(num2,-1);
pictureName = pictureName.mid(0,pictureName.lastIndexOf('.'));
QString pictureName2 =":Image"+pictureName+ "1.jpg";
pictureName =":Image"+pictureName+ ".jpg";
//reset widget background
QPalette palette;
this->setAutoFillBackground(true);
QPixmap pixmap;
pixmap.load(pictureName);
palette.setBrush(QPalette::Background,QBrush(pixmap));
palette.setBrush(this->backgroundRole(),QBrush(pixmap.scaled(1118,615).scaled(1118,615,Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));
QPainter p3(&pixmap);
p3.setCompositionMode(QPainter::CompositionMode_Source);
p3.drawPixmap(0, 0, pixmap);
p3.setCompositionMode(QPainter::CompositionMode_DestinationIn);
this->setPalette(palette);
//添加标签中的图片
QMovie *myMovie6 = new QMovie(pictureName2);
ui->label_4->setMovie(myMovie6);
ui->label_4->setScaledContents(true);
myMovie6->start();
//set opacity
QGraphicsOpacityEffect* opacityEffect2 = new QGraphicsOpacityEffect;
opacityEffect2->setOpacity(0);
ui->label_6->setGraphicsEffect(opacityEffect2);
});
void Widget::on_pushButton_5_clicked()
{
//select song
QFileDialog *fdlg = nullptr;
QString fileName = fdlg->getOpenFileName(this,"open File","/home/itcast/Desktop","(*.mp3)");
if(fileName == NULL)
return;
QString RealfileName = fileName.mid(fileName.lastIndexOf('/')+1);
buf = fileName;
//song add to List
const char* rfn = RealfileName.toLatin1();
const char* fn = fileName.toLatin1();
printf("%s %sn",rfn,fn);
bool flag = AddNode(rfn,fn);
if(flag)
{
//add to QListWigetItem
QListWidgetItem *item = new QListWidgetItem(QIcon(":Image/To-like.png"),RealfileName);
ui->listWidget->addItem(item);
item->setTextAlignment(Qt::AlignLeft);
QString number = QString::number(songNum);
ui->lineEdit_2->setText(number);
}else{
QMessageBox::critical(this,"error","overlap exists");
}
}
void Widget::on_listWidget_itemClicked(QListWidgetItem *item)
{
buf = item->text();
buf = "/home/itcast/Desktop/"+buf;
//change current
while(current->path != buf)
{
current = current->next;
}
}
void Widget::on_pushButton_6_clicked()
{
if(songNum == 0)
{
QMessageBox::critical(this,"critical","no songs in songList");
return ;
}
QString RealfileName = buf.mid(buf.lastIndexOf('/')+1);
//foreach to find song to delete
for(int i=0 ;i
{
if(ui->listWidget->item(i)->text() == RealfileName)
{
ui->listWidget->takeItem(i);
songNum--;
//updata songNum
QString number = QString::number(songNum);
ui->lineEdit_2->setText(number);
RemoveNode(RealfileName);
QString filename = "/home/itcast/Desktop/"+RealfileName;
if(onbuf == filename)
{
system("killall -9 madplay");
//reset picture in label_4
QMovie *myMovie = new QMovie(":Image/CD.png");
ui->label_4->setMovie(myMovie);
ui->label_4->setScaledContents(true);
myMovie->start();
ui->lineEdit->setText("");
ui->textEdit->setText("");
//reset widget background
QPalette palette;
this->setAutoFillBackground(true);
QPixmap pixmap;
pixmap.load(":Image/default.jpg");
palette.setBrush(QPalette::Background,QBrush(pixmap));
this->setPalette(palette);
//set opacity
QGraphicsOpacityEffect* opacityEffect2 = new QGraphicsOpacityEffect;
opacityEffect2->setOpacity(1);
ui->label_6->setGraphicsEffect(opacityEffect2);
}
}
}
}
smallwidget.h
#ifndef SMALLWIDGET_H
#define SMALLWIDGET_H
#include
#include
#include
namespace Ui {
class smallwidget;
}
class smallwidget : public QWidget
{
Q_OBJECT
public:
explicit smallwidget(QWidget *parent = nullptr);
~smallwidget();
private slots:
//void on_spinBox_valueChanged(const QString &arg1);
//void keyPressEvent( QKeyEvent *k );
private:
Ui::smallwidget *ui;
};
smallwidget.cpp
#include "smallwidget.h"
#include "ui_smallwidget.h"
smallwidget::smallwidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::smallwidget)
{
ui->setupUi(this);
//set spinBox color
QPalette pal(QColor(255,0,0));
pal.setColor(QPalette::Background,QColor(255,255,255));
ui->spinBox->setPalette(pal);
QPalette pa;
pa.setColor(QPalette::WindowText,Qt::red);
ui->spinBox->setPalette(pa);
//SpinBox connect QSlider
void(QSpinBox:: * spinSignal)(int) = &QSpinBox::valueChanged;
connect(ui->spinBox,spinSignal,ui->horizontalSlider,&QSlider::setValue);
connect(ui->horizontalSlider,&QSlider::valueChanged,ui->spinBox,&QSpinBox::setValue);
//set init value
ui->spinBox->setValue(99);
//click to change volumn
connect(ui->spinBox,spinSignal,this,[=](){
int val = ui->spinBox->value();
QString str = QString::number(val);
QString setVolume = "amixer set Master "+str+"%";
qDebug() <
const char* strChar = setVolume.toLatin1();
system(strChar);
});
}
smallwidget::~smallwidget()
{
delete ui;
}
举报