首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Qt5 播放器播放模式實現:隨機、順序、列表循環

     編輯:程式設計綜合問答

核心思路

維護一個 QStringList 或 QList<MediaInfo> 作為播放清單。根據播放模式決定下一首索引:

  • 順序播放:index = (index + 1) % count
  • 列表循環:同順序,播完最後一首回到第一首
  • 隨機播放:index = 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 避免短時間重複。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved