关于音乐播放器播放列表用数据库保存的问题
我用Qt做了个音乐播放器,现在想将添加到播放列表的音乐用数据库保存,但是创建了数据库后,在添加音频文件的地方将音乐数据添加进数据库,结果未能实现,想请教各位大佬该怎么用数据库保存音乐列表,下次打开还在呢本帖最后由 学到老 于 2020-3-13 09:56 编辑
1.可以用QSQLite数据库,将有关信息保存在本地。下次程序打开时再从里面读数据。类似于文件读写操作,具体可以查看书籍或网上资料。
2.用文件读写方式更简单些,Json格式、xml格式、配置文件格式、甚至自定义格式都可以用。
3.保存的是文件资源路径的话简单些。如果要把音乐文件保存进数据库,这个没试过。或许要存二进制数据吧。
学到老 发表于 2020-3-13 09:53
1.可以用QSQLite数据库,将有关信息保存在本地。下次程序打开时再从里面读数据。类似于文件读写操作,具体 ...
我现在就是可以把文件的路径存到数据库里,但是我再用addmedia想放到playerlist里,歌曲名是会显示的,但是双击程序就会无响应退出 附上我显示数据库内容和双击播放的代码
void MainWindow::init_list()
{
QSqlQuery query;
model=new QSqlTableModel(this);//本地音乐列表数据库模型
model->setTable("LocalMusic");
model->select();
query.exec("select * from LocalMusic");
while(query.next())//初始化本地音乐播放列表
{
int in=query.value(0).toInt();
QString SongName=query.value(1).toString();
QString SingerName=query.value(2).toString();
QString SongPath=query.value(3).toString();
qDebug()<<in<<SongName<<SingerName<<SongPath;
// Playerlist->addMedia(QMediaContent(QUrl::fromLocalFile(SongPath)));
//player->setPlaylist(Playerlist); //将播放列表加载到播放器
if(!SongName.isEmpty()&&!SingerName.isEmpty())
{
int count = ui->MusicList->rowCount();
ui->MusicList->setRowCount(count+1);
QTableWidgetItem *itemName = new QTableWidgetItem(SongName);
QTableWidgetItem *itemName1 = new QTableWidgetItem(SingerName);
Playerlist->addMedia(QMediaContent(QUrl::fromLocalFile(SongPath)));
ui->MusicList ->setItem(count,0,itemName);
ui->MusicList -> setItem(count,1,itemName1);
}
}
//player->setPlaylist(Playerlist); //将播放列表加载到播放器
}void MainWindow::on_MusicList_doubleClicked(const QModelIndex &index)
{
player->setPlaylist(Playerlist);
int currentIndex = index.row();//获得QTableWidget列表点击的行数
Playerlist->setCurrentIndex(currentIndex);
player->play();
if(!isPlay)
{
ui->SPButton->setIcon(QIcon(QPixmap(":/new/prefix1/image/pause.ico").scaled(ui->SPButton->rect().size())));
isPlay = true;
}
}
页:
[1]