321影音代码

以下是一个基于Qt的简单影音娱乐系统的代码示例,包含了播放器、视频列表和音频列表等功能: mainwindow.h: ``` #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QMediaPlayer> #include <QMediaPlaylist> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void on_actionOpen_triggered(); void on_playButton_clicked(); void on_pauseButton_clicked(); void on_stopButton_clicked(); void on_previousButton_clicked(); void on_nextButton_clicked(); void on_videoList_doubleClicked(const QModelIndex &index); void on_audioList_doubleClicked(const QModelIndex &index); private: Ui::MainWindow *ui; QMediaPlayer *player; QMediaPlaylist *playlist; }; #endif // MAINWINDOW_H ``` mainwindow.cpp: ``` #include "mainwindow.h" #include "ui_mainwindow.h" #include <QFileDialog> #include <QMessageBox> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); player = new QMediaPlayer(this); playlist = new QMediaPlaylist(player); //设置播放模式为循环播放 playlist->setPlaybackMode(QMediaPlaylist::Loop); //将视频列表和音频列表设置为播放列表 player->setPlaylist(playlist); //设置视频列表和音频列表为多选模式 ui->videoList->setSelectionMode(QAbstractItemView::MultiSelection); ui->audioList->setSelectionMode(QAbstractItemView::MultiSelection); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_actionOpen_triggered() { QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("Open File"), "", tr("Video Files (*.mp4 *.avi);;Audio Files (*.mp3 *.wav)")); if(fileNames.isEmpty()) return; //将选中的文件添加到播放列表中 for(int i = 0; i < fileNames.size(); i++) { playlist->addMedia(QUrl::fromLocalFile(fileNames.at(i))); } //将选中的文件添加到视频列表或音频列表中 for(int i = 0; i < fileNames.size(); i++) { QFileInfo fileInfo(fileNames.at(i)); if(fileInfo.suffix() == "mp4" || fileInfo.suffix() == "avi") { ui->videoList->addItem(fileInfo.fileName()); } else if(fileInfo.suffix() == "mp3" || fileInfo.suffix() == "wav") { ui->audioList->addItem(fileInfo.fileName()); } } //如果没有正在播放,则播放第一个文件 if(player->state() != QMediaPlayer::PlayingState) { player->play(); } } void MainWindow::on_playButton_clicked() { player->play(); } void MainWindow::on_pauseButton_clicked() { player->pause(); } void MainWindow::on_stopButton_clicked() { player->stop(); } void MainWindow::on_previousButton_clicked() { playlist->previous(); } void MainWindow::on_nextButton_clicked() { playlist->next(); } void MainWindow::on_videoList_doubleClicked(const QModelIndex &index) { //根据选中的视频文件索引,设置播放列表中的当前媒体 playlist->setCurrentIndex(index.row()); //开始播放 player->play(); } void MainWindow::on_audioList_doubleClicked(const QModelIndex &index) { //根据选中的音频文件索引,设置播放列表中的当前媒体 playlist->setCurrentIndex(ui->videoList->count() + index.row()); //开始播放 player->play(); } ``` 此代码仅为示例,实际应用中可以根据需要进行修改和优化。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值