1、创建一个qmainwindow项目
设置按钮的宽高
4、实现打开文件
void MainWindow::readSongFlies(bool)
{
files.clear(); // 先清空原有链表
songList->clear(); // 先清空原有链表
files = QFileDialog::getOpenFileNames(
this,
"选择文件",
"/home",
"Audio Files (*.wav *.mp3 *.ogg *.flac)");
// 添加新数据
for(int i=0;i<files.size();i++)
{
QString songfile = files.at(i); // 处理文件路径
QStringList songfileSplite = songfile.split("/");
QString name = songfileSplite.at(songfileSplite.size()-1);
songList->appendRow(new QStandardItem(name));
}
ui->songList->setModel(songList);
}
5、双击歌曲名获取歌词并播放
5.1添加设计师类继承qwidget
5.2监听双击鼠标事件
#include "mylistview.h"
#include "ui_mylistview.h"
#include<QDebug>
MyListView::MyListView(QWidget *parent) :
QWidget(parent),
ui(new Ui::MyListView)
{
ui->setupUi(this);
// 设置不可编译
ui->listView->setEditTriggers(QAbstractItemView::NoEditTriggers);
// 连接QListView的双击信号到槽函数
connect(ui->listView, &QListView::doubleClicked, this, &MyListView::getIndexData);
}
MyListView::~MyListView()
{
delete ui;
}
void MyListView::setSongList(QStandardItemModel *&songList)
{
ui->listView->setModel(songList);
}
void MyListView::getIndexData(const QModelIndex &index)
{
// 获取当前双击的项目数据
QString songName = index.data().toString();
// 处理获取到的当前内容
emit selectSongName(songName);
}
阶段效果
## 6、实现歌词展示
6.1读取歌词
添加一个c++类处理歌词文件解析,返回对象