由于我是AI语言模型,无法直接生成qt文件,请参考以下代码作为参考:
main.cpp
#include
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H
#include
QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_actionOpen_triggered();
void on_actionQuit_triggered();
void on_playButton_clicked();
void on_pauseButton_clicked();
void on_stopButton_clicked();
void on_volumeSlider_valueChanged(int value);
void on_positionSlider_valueChanged(int value);
void on_durationChanged(qint64 duration);
void on_positionChanged(qint64 position);
void on_playlistButton_clicked();
void on_addButton_clicked();
void on_removeButton_clicked();
void on_clearButton_clicked();
private:
Ui::MainWindow *ui;
QMediaPlayer *player;
QMediaPlaylist *playlist;
bool isPlaying;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include “mainwindow.h” #include “ui_mainwindow.h”
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
player = new QMediaPlayer(this);
playlist = new QMediaPlaylist(player);
player->setPlaylist(playlist);
ui->positionSlider->setRange(0, 0);
connect(player, SIGNAL(durationChanged(qint64)), this, SLOT(on_durationChanged(qint64)));
connect(player, SIGNAL(positionChanged(qint64)), this, SLOT(on_positionChanged(qint64)));
}
MainWindow::~MainWindow() {
delete ui;
delete player;
delete playlist;
}
void MainWindow::on_actionOpen_triggered() {
QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), "/", tr("Video Files (*.mp4 *.avi);;Audio Files (*.mp3)"));
if (!fileName.isEmpty()) {
playlist->addMedia(QUrl::fromLocalFile(fileName));
ui->playlistWidget->addItem(QFileInfo(fileName).fileName());
}
}
void MainWindow::on_actionQuit_triggered() {
QApplication::quit();
}
void MainWindow::on_playButton_clicked() {
if (playlist->currentIndex() < 0) return;
player->play();
isPlaying = true;
}
void MainWindow::on_pauseButton_clicked() {
if (isPlaying) {
player->pause();
isPlaying = false;
} else {
player->play();
isPlaying = true;
}
}
void MainWindow::on_stopButton_clicked() {
player->stop();
isPlaying = false;
}
void MainWindow::on_volumeSlider_valueChanged(int value) {
player->setVolume(value);
}
void MainWindow::on_positionSlider_valueChanged(int value) {
player->setPosition(value);
}
void MainWindow::on_durationChanged(qint64 duration) {
ui->positionSlider->setRange(0, duration);
}
void MainWindow::on_positionChanged(qint64 position) {
ui->positionSlider->setValue(position);
}
void MainWindow::on_playlistButton_clicked() {
ui->playlistWidget->setVisible(!ui->playlistWidget->isVisible());
}
void MainWindow::on_addButton_clicked() {
QString fileName = QFileDialog::getOpenFileName(this, tr("Add File"), "/", tr("Video Files (*.mp4 *.avi);;Audio Files (*.mp3)"));
if (!fileName.isEmpty()) {
playlist->addMedia(QUrl::fromLocalFile(fileName));
ui->playlistWidget->addItem(QFileInfo(fileName).fileName());
}
}
void MainWindow::on_removeButton_clicked() {
int index = ui->playlistWidget->currentRow();
if (index >= 0) {
playlist->removeMedia(index);
delete ui->playlistWidget->takeItem(index);
}
}
void MainWindow::on_clearButton_clicked() {
playlist->clear();
ui->playlistWidget->clear();
}
ui_mainwindow.h
<?xml version=“1.0” encoding=“UTF-8”?>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
<item>
<widget class="QLabel" name="titleLabel">
<property name="text">
<string>Media Player</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QVideoWidget" name="videoWidget"/>
</item>
<item>
<widget class="QSlider" name="positionSlider">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="playButton">
<property name="text">
<string>Play</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pauseButton">
<property name="text">
<string>Pause</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="stopButton">
<property name="text">
<string>Stop</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="volumeLabel">
<property name="text">
<string>Volume:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight</set>
</property>
</widget>
</item>
<item>
<widget class="QSlider" name="volumeSlider">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QPushButton" name="playlistButton">
<property name="text">
<string>Show Playlist</string>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="playlistWidget">
<layout class="QVBoxLayout" name="playlistLayout"/>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QPushButton" name="addButton">
<property name="text">
<string>Add File</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="removeButton">
<property name="text">
<string>Remove File</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="clearButton">
<property name="text">
<string>Clear Playlist</string>
</property>
</widget>
</item>
</layout>
</item>
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>25</height>
</rect>
<property name="title">
<string>File</string>
</property>
<addaction name="actionOpen"/>
<addaction name="actionQuit"/>
<string>Open...</string>
<string>Quit</string>
media_player.pro
QT += core gui multimediawidgets multimedia
CONFIG += c++11
TARGET = media_player TEMPLATE = app
INCLUDEPATH += .
Source files
SOURCES += main.cpp
mainwindow.cpp
Header files
HEADERS += mainwindow.h
UI files
FORMS += ui_mainwindow.h
Resource files
RESOURCES +=
win32:RC_ICONS += icon.ico
macx:ICON = icon.icns