找回密码
 立即注册
收起左侧

关于音乐播放器播放列表用数据库保存的问题

3
回复
3952
查看
[复制链接]

尚未签到

来源: 2020-3-10 18:34:39 显示全部楼层 |阅读模式
1Qter豆
我用Qt做了个音乐播放器,现在想将添加到播放列表的音乐用数据库保存,但是创建了数据库后,在添加音频文件的地方将音乐数据添加进数据库,结果未能实现,想请教各位大佬该怎么用数据库保存音乐列表,下次打开还在呢

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册
回复

使用道具 举报

累计签到:161 天
连续签到:1 天
2020-3-13 09:53:06 显示全部楼层
本帖最后由 学到老 于 2020-3-13 09:56 编辑

1.可以用QSQLite数据库,将有关信息保存在本地。下次程序打开时再从里面读数据。类似于文件读写操作,具体可以查看书籍或网上资料。
2.用文件读写方式更简单些,Json格式、xml格式、配置文件格式、甚至自定义格式都可以用。
3.保存的是文件资源路径的话简单些。如果要把音乐文件保存进数据库,这个没试过。或许要存二进制数据吧。



回复

使用道具 举报

尚未签到

2020-3-17 18:50:59 显示全部楼层
学到老 发表于 2020-3-13 09:53
1.可以用QSQLite数据库,将有关信息保存在本地。下次程序打开时再从里面读数据。类似于文件读写操作,具体 ...

我现在就是可以把文件的路径存到数据库里,但是我再用addmedia想放到playerlist里,歌曲名是会显示的,但是双击程序就会无响应退出
回复

使用道具 举报

尚未签到

2020-3-17 18:54:52 显示全部楼层
附上我显示数据库内容和双击播放的代码

  1. void MainWindow::init_list()
  2. {

  3.     QSqlQuery query;
  4.     model=new QSqlTableModel(this);//本地音乐列表数据库模型
  5.     model->setTable("LocalMusic");
  6.     model->select();
  7.    query.exec("select * from LocalMusic");
  8.    while(query.next())//初始化本地音乐播放列表
  9.    {
  10.        int in=query.value(0).toInt();
  11.        QString SongName=query.value(1).toString();
  12.        QString SingerName=query.value(2).toString();
  13.        QString SongPath=query.value(3).toString();
  14.        qDebug()<<in<<SongName<<SingerName<<SongPath;
  15.        // Playerlist->addMedia(QMediaContent(QUrl::fromLocalFile(SongPath)));
  16.         //player->setPlaylist(Playerlist); //将播放列表加载到播放器
  17.        if(!SongName.isEmpty()&&!SingerName.isEmpty())
  18.        {

  19.            int count = ui->MusicList->rowCount();
  20.            ui->MusicList->setRowCount(count+1);
  21.            QTableWidgetItem *itemName = new QTableWidgetItem(SongName);
  22.            QTableWidgetItem *itemName1 = new QTableWidgetItem(SingerName);
  23.            Playerlist->addMedia(QMediaContent(QUrl::fromLocalFile(SongPath)));
  24.            ui->MusicList ->setItem(count,0,itemName);
  25.            ui->MusicList -> setItem(count,1,itemName1);


  26.        }

  27.    }
  28.   //player->setPlaylist(Playerlist); //将播放列表加载到播放器
  29. }
复制代码
  1. void MainWindow::on_MusicList_doubleClicked(const QModelIndex &index)
  2. {

  3.     player->setPlaylist(Playerlist);
  4.     int currentIndex = index.row();//获得QTableWidget列表点击的行数
  5.     Playerlist->setCurrentIndex(currentIndex);

  6.     player->play();
  7.     if(!isPlay)
  8.     {
  9.         ui->SPButton->setIcon(QIcon(QPixmap(":/new/prefix1/image/pause.ico").scaled(ui->SPButton->rect().size())));
  10.         isPlay = true;
  11.     }

  12. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了