維護一個 QStringList 或 QList<MediaInfo> 作為播放清單。根據播放模式決定下一首索引:
index = (index + 1) % countindex = QRandomGenerator::global()->bounded(count),可加入歷史記錄避免連續重複// 播放模式枚舉
enum PlayMode { Sequential, Loop, Random };
// 獲取下一首索引
int nextIndex(int current, int count, PlayMode mode) {
switch (mode) {
case Sequential:
case Loop:
return (current + 1) % count;
case Random:
return QRandomGenerator::global()->bounded(count);
}
return 0;
}
// 實際播放邏輯
void Player::playNext() {
int next = nextIndex(currentIndex, playlist.size(), mode);
if (next >= 0 && next < playlist.size()) {
currentIndex = next;
playMedia(playlist[currentIndex]);
}
}
QMediaPlaylist 內建 PlaybackMode(CurrentItemOnce, Sequential, Loop, Random)可直接套用,無需手寫邏輯。QSet<int> playedIndices 避免短時間重複。