qt USB音乐,USB视频,USB图片 写出完整代码
时间: 2024-05-16 07:12:31 浏览: 28
以下是一个使用Qt编写的USB音乐、USB视频和USB图片播放器的示例代码:
```
#include <QMediaPlayer>
#include <QVideoWidget>
#include <QFileDialog>
#include <QPixmap>
#include <QLabel>
class USBPlayer : public QObject
{
Q_OBJECT
public:
USBPlayer(QObject *parent = nullptr)
: QObject(parent)
, m_mediaPlayer(new QMediaPlayer(this))
, m_videoWidget(new QVideoWidget(this))
, m_imageLabel(new QLabel(this))
{
connect(m_mediaPlayer, &QMediaPlayer::mediaStatusChanged, this, &USBPlayer::onMediaStatusChanged);
m_mediaPlayer->setVideoOutput(m_videoWidget);
}
void playMusic()
{
QString fileName = QFileDialog::getOpenFileName(nullptr, tr("Open Music"), "", tr("Music Files (*.mp3 *.wav)"));
if (!fileName.isEmpty()) {
m_mediaPlayer->setMedia(QUrl::fromLocalFile(fileName));
m_mediaPlayer->play();
}
}
void playVideo()
{
QString fileName = QFileDialog::getOpenFileName(nullptr, tr("Open Video"), "", tr("Video Files (*.mp4 *.avi)"));
if (!fileName.isEmpty()) {
m_mediaPlayer->setMedia(QUrl::fromLocalFile(fileName));
m_mediaPlayer->play();
m_videoWidget->show();
}
}
void showImage()
{
QString fileName = QFileDialog::getOpenFileName(nullptr, tr("Open Image"), "", tr("Image Files (*.png *.jpg *.bmp)"));
if (!fileName.isEmpty()) {
QPixmap pixmap(fileName);
m_imageLabel->setPixmap(pixmap);
m_imageLabel->setScaledContents(true);
m_imageLabel->show();
}
}
private slots:
void onMediaStatusChanged(QMediaPlayer::MediaStatus status)
{
if (status == QMediaPlayer::EndOfMedia) {
m_videoWidget->hide();
}
}
private:
QMediaPlayer *m_mediaPlayer;
QVideoWidget *m_videoWidget;
QLabel *m_imageLabel;
};
```
在这个示例中,我们创建了一个名为`USBPlayer`的类来管理USB音乐、USB视频和USB图片的播放。在类的构造函数中,我们初始化了一个`QMediaPlayer`对象和一个`QVideoWidget`对象,用于播放视频。我们还创建了一个`QLabel`对象,用于显示图片。
`playMusic()`、`playVideo()`和`showImage()`函数分别用于打开文件对话框,选择要播放的音乐、视频或图片,并将其添加到`QMediaPlayer`对象中。如果选择了视频文件,则将`QVideoWidget`显示出来。如果选择了图片文件,则将其显示到`QLabel`中。
在`onMediaStatusChanged()`槽函数中,我们检测媒体状态是否为`EndOfMedia`,如果是,则隐藏`QVideoWidget`对象。
使用该类的示例代码如下:
```
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
USBPlayer player;
player.playMusic();
player.playVideo();
player.showImage();
return app.exec();
}
```
在main函数中,我们创建了一个`USBPlayer`对象,并分别调用`playMusic()`、`playVideo()`和`showImage()`函数来播放音乐、视频和图片。最后,我们进入Qt的事件循环中,等待用户交互。
阅读全文