#include #include #include #include #include #include #include #include #include int getRandomNo(int low, int high) { return qrand() % ((high + 1) - low) + low; } QUrl getUrl() { return QUrl(QString("http://blog.yuntech.edu.tw/userfilev4/16112/testmusic.mp3?%1").arg(QString::number(QDateTime::currentMSecsSinceEpoch()))); } int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget *widget = new QWidget(); for (int fori = 0; fori < 10; fori++) { QMediaPlayer *mediaPlayer = new QMediaPlayer(); mediaPlayer->setObjectName(QString::number(fori+1)); mediaPlayer->setMedia(QMediaContent(getUrl())); mediaPlayer->setMuted(true); // simulate reloaded action in qtwebkit. QObject::connect(mediaPlayer, &QMediaPlayer::stateChanged, [=](QMediaPlayer::State mediaPlayerState) { if (mediaPlayerState == QMediaPlayer::StoppedState) { qDebug() << mediaPlayer << mediaPlayer->state() << mediaPlayer->mediaStatus(); mediaPlayer->setMedia(QMediaContent(getUrl())); QTimer::singleShot(1, mediaPlayer, SLOT(play())); QTimer::singleShot(getRandomNo(5, 20), mediaPlayer, SLOT(stop())); } } ); QTimer::singleShot(1, mediaPlayer, SLOT(play())); QTimer::singleShot(getRandomNo(5, 20), mediaPlayer, SLOT(stop())); } widget->show(); return a.exec(); }