-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmusiclistwidget.cpp
More file actions
70 lines (58 loc) · 2.38 KB
/
musiclistwidget.cpp
File metadata and controls
70 lines (58 loc) · 2.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include "MusicListWidget.h"
MusicListWidget::MusicListWidget(QWidget* parent) : QWidget(parent), ui(new Ui::MusicList)
{
ui->setupUi(this);
// 连接音乐列表项点击事件
connect(ui->listWidget_2, &QListWidget::itemClicked, this, &MusicListWidget::localMusicItemClicked);
connect(ui->listWidget, &QListWidget::itemClicked, this, &MusicListWidget::onlineMusicItemClicked);
connect(ui->searchButton, &QPushButton::clicked, this, &MusicListWidget::onSearchButtonClicked);
}
MusicListWidget::~MusicListWidget()
{
delete ui;
}
void MusicListWidget::showLocalMusicList(QList<Song>& localMusicList) {
// 显示本地音乐列表
populateListWidget(ui->listWidget_2, localMusicList);
}
void MusicListWidget::showOnlineMusicList(QList<Song>& onlineMusicList) {
// 显示线上音乐列表
populateListWidget(ui->listWidget, onlineMusicList);
}
void MusicListWidget::addLocalMusic(const Song& localSong) {
// 更新本地音乐列表
QString displayText = QString("%1 - %2").arg(localSong.getMusicName()).arg(localSong.getAlbumName());
auto item = new QListWidgetItem(displayText);
SongItemData songData;
songData.song = localSong;
songData.displayText = displayText;
item->setData(Qt::UserRole, QVariant::fromValue(songData));
ui->listWidget_2->addItem(item);
ui->listWidget_2->repaint();
}
void MusicListWidget::onSearchButtonClicked() {
QString searchText = ui->lineEdit->text(); // 获取文本框中的搜索文本
emit searchOnline(searchText);
}
void MusicListWidget::localMusicItemClicked(QListWidgetItem* item) {
// 发送所选歌曲信号
emit localSongSelected(item->data(Qt::UserRole).value<SongItemData>().song);
}
void MusicListWidget::onlineMusicItemClicked(QListWidgetItem* item) {
// 发送所选歌曲信号
emit onlineSongSelected(item->data(Qt::UserRole).value<SongItemData>().song);
}
void MusicListWidget::populateListWidget(QListWidget* listWidget, const QList<Song>& songs) {
listWidget->clear();
// 为音乐列表部件填充数据
for (const Song& song : songs) {
QString displayText = QString("%1 - %2").arg(song.getMusicName()).arg(song.getAlbumName());
auto item = new QListWidgetItem(displayText);
SongItemData songData;
songData.song = song;
songData.displayText = displayText;
item->setData(Qt::UserRole, QVariant::fromValue(songData));
listWidget->addItem(item);
}
listWidget->repaint();
}