1.HTTP 网络
1.头文件 :
网络
/***** HTTP 网络相关模块 *****/
#include <QNetworkAccessManager> /** 网络访问类 **/
#include <QNetworkRequest> /** 网络请求数据类 **/
#include <QNetworkReply> /** 网络结果数据类 **/
#include <QUrl> /** 网络超链接类 **/
JSON (因为传输的数据都是 JSON 类型,所以我们需要利用 jSOn 解析)
#include <QJsonDocument> /** 解析JSON的类 **/
#include <QJsonObject> /** JSON的类 **/
#include <QJsonArray> /** JSON的数组类 **/
#include <QJsonValue> /** JSON的各种值类 **/
2. 两种请求的方法
函数:get(QNetworkRequest(url)); //参数1 请求的链接
post(QNetworkRequest(url),data.toUtf8());//参数1 请求的链接, 参数2 一个字符串
3.学习怎么用网络请求
4.建立一个对象,并且实列化
QNetworkAccessManager *m_http; /** 网络访问类 对象 **/
m_http = new QNetworkAccessManager(this);//实列化
5.建立 信号接收数据的链接
connect(m_http,SIGNAL(finished(QNetworkReply*)),this,SLOT(slot_http_finished(QNetworkReply*)));
finished(QNetworkReply*) 是一个信号,他是网络上有数据可以接收,
slot_http_finished(QNetworkReply*) 是自己的槽函数
6.开始向网络请求 拿到数据
利用上面的两个函数:(两种方法)
void MainWindow::slot_pushButton_request()
{
QString city = ui->lineEdit_city->text();
QUrl url = QString("http://query.asilu.com/weather/baidu/?city=%1").arg(city);//请求天气的链接
#if 0
/**** HTTP的get请求 ****/
m_http->get(QNetworkRequest(url));//第一种
#else
/**** HTTP的post请求 ****/
QString data;
m_http->post(QNetworkRequest(url),data.toUtf8());//第二种
#endif
}
7.当有数据来的时候 接收数据
QByteArray data = Reply->readAll(); // 接收数据
8. 解析代码 使用 JSON
函数 QJsonDocument::fromJson(data); //把 QByteArray 变成 QJsonDocument 类型
QJsonObject JsonObject= JsonDocument.object(); /***.objext 转换成JSON对象 ***/
QJsonArray JsonArray = JsonObject["weather"].toArray(); /*** toArray 转换成JSON数组 ***/
xxx.toString ///转换为字符串
可以请求的网站链接: 自己找吧!!(搜索,HTTP 请求 xxx 的接口API 就可以了)
所有的代码:
ui 设计界面
头文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
/***** HTTP 网络相关模块 *****/
#include <QNetworkAccessManager> /** 网络访问类 **/
#include <QNetworkRequest> /** 网络请求数据类 **/
#include <QNetworkReply> /** 网络结果数据类 **/
#include <QUrl> /** 网络超链接类 **/
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
QNetworkAccessManager *m_http; /** 网络访问类 对象 **/
public slots:
void slot_http_finished(QNetworkReply* Reply);
void slot_pushButton_request();
};
#endif // MAINWINDOW_H
.cpp 文件
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
/*** 申请网络访问类对象空间 ***/
m_http = new QNetworkAccessManager(this);
/*** 网络访问类有数据可读信号(完成请求) ***/
connect(m_http,SIGNAL(finished(QNetworkReply*)),this,SLOT(slot_http_finished(QNetworkReply*)));
connect(ui->pushButton_request,SIGNAL(clicked(bool)),this,SLOT(slot_pushButton_request()));
}
void MainWindow::slot_pushButton_request()
{
QString city = ui->lineEdit_city->text();
QUrl url = QString("http://query.asilu.com/weather/baidu/?city=%1").arg(city);
#if 0
/**** HTTP的get请求 ****/
m_http->get(QNetworkRequest(url));
#else
/**** HTTP的post请求 ****/
QString data;
m_http->post(QNetworkRequest(url),data.toUtf8());
#endif
}
#include <QJsonDocument> /** 解析JSON的类 **/
#include <QJsonObject> /** JSON的类 **/
#include <QJsonArray> /** JSON的数组类 **/
#include <QJsonValue> /** JSON的各种值类 **/
void MainWindow::slot_http_finished(QNetworkReply *Reply)
{
QByteArray data = Reply->readAll(); // 接收数据
QJsonDocument JsonDocument = QJsonDocument::fromJson(data); //解析JSON
if(JsonDocument.isObject() == true)
{
//ui->textBrowser_JSON->setText(JsonDocument.toJson()); //转换成JSON格式的字符串方便显示
QJsonObject JsonObject= JsonDocument.object(); /*** 转换成JSON对象 ***/
/*** 清空JSON结果框 ***/
ui->textBrowser_JSON->clear();
ui->textBrowser_JSON->append(QString("城市:") + JsonObject["city"].toString());
ui->textBrowser_JSON->append(QString("日期:") + JsonObject["date"].toString());
ui->textBrowser_JSON->append(QString("时间:") + JsonObject["update_time"].toString());
QJsonArray JsonArray = JsonObject["weather"].toArray(); /*** 转换成JSON数组 ***/
QString times[] = {"今天:","明天:","后天:","大后天:","大大后天:"};
for(int i = 0; i < 5;i++)
{
QJsonObject JsonObject = JsonArray[i].toObject();
ui->textBrowser_JSON->append(times[i] + JsonObject["temp"].toString());
}
}
}
MainWindow::~MainWindow()
{
delete ui;
}
2. 串口连接
1.头文件:
/***** 串口模块 ******/
#include <QSerialPort> //串口类
#include <QSerialPortInfo> //串口属性类 { 获取系统可用的串口 }
2.建立对象并且实列化对象:
QSerialPort *SerialPort; /** 串口类 **/
SerialPort = new QSerialPort(this);//实列化对象
3.各种函数
/*** 类构造时就获取系统可用串口列表 ***/
GetSystenSerilPort();
/*** 写入数据 ***/
write(text.toUtf8());
/*** 读取数据 ***/
readAll();
/******* 设置串口属性 ******/
SerialPort->setPortName(ui->comboBox_portName->currentText()); //设置串口号
SerialPort->setBaudRate(ui->comboBox_BaudRate->currentText().toInt()); //设置波特率
SerialPort->setDataBits(QSerialPort::Data8); //设置数据位为8位
SerialPort->setParity(QSerialPort::NoParity); //设置校验位为无校验
SerialPort->setStopBits(QSerialPort::OneStop); //设置停止位为1位
/***** 打开串口 ****/
bool ok = false;
ok = SerialPort->open(QIODevice::ReadWrite);
/** 关闭串口 **/
SerialPort->close(); //关闭串口
4.首先是配置串口属性
/******* 设置串口属性 ******/
SerialPort->setPortName(ui->comboBox_portName->currentText()); //设置串口号
SerialPort->setBaudRate(ui->comboBox_BaudRate->currentText().toInt()); //设置波特率
SerialPort->setDataBits(QSerialPort::Data8); //设置数据位为8位
SerialPort->setParity(QSerialPort::NoParity); //设置校验位为无校验
SerialPort->setStopBits(QSerialPort::OneStop); //设置停止位为1位
5.打开串口
bool ok = false;
ok = SerialPort->open(QIODevice::ReadWrite);
6.写数据
void MainWindow::slot_pushButton_send()
{
QString text = ui->lineEdit_send->text();//获取要发送的数据
SerialPort->write(text.toUtf8());//发送数据
}
7.建立读取数据的信号连接,当数据来的时候,就可以知道有数据可以读取。
connect(SerialPort,SIGNAL(readyRead()),this,SLOT(slot_SerialPort_readyRead()));
参数1 出口类指针, 参数2 信号,
8.关闭串口,
SerialPort->close(); //关闭串口
ui设计界面
头文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
/***** 串口模块 ******/
#include <QSerialPort> //串口类
#include <QSerialPortInfo> //串口属性类 { 获取系统可用的串口 }
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
public:
void GetSystenSerilPort(); /*** 获取系统可用串口列表,并打印到UI界面 ***/
private:
Ui::MainWindow *ui;
QSerialPort *SerialPort; /** 串口类 **/
public slots:
void slot_pushButton_open();
void slot_pushButton_send();
void slot_SerialPort_readyRead();
};
#endif // MAINWINDOW_H
。cpp文件
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
/*** 申请串口类对象空间 ****/
SerialPort = new QSerialPort(this);
/*** 类构造时就获取系统可用串口列表 ***/
GetSystenSerilPort();
/*** 连接槽函数 ****/
connect(ui->pushButton_open,SIGNAL(clicked(bool)),this,SLOT(slot_pushButton_open()));
connect(SerialPort,SIGNAL(readyRead()),this,SLOT(slot_SerialPort_readyRead()));
connect(ui->pushButton_send,SIGNAL(clicked(bool)),this,SLOT(slot_pushButton_send()));
}
void MainWindow::slot_pushButton_send()
{
QString text = ui->lineEdit_send->text();
SerialPort->write(text.toUtf8());
}
void MainWindow::slot_SerialPort_readyRead()
{
QByteArray data = SerialPort->readAll();
ui->textBrowser_read->append(data);
}
#include <QMessageBox> /*** 标准对话框 ****/
void MainWindow::slot_pushButton_open()
{
/******* 设置串口属性 ******/
SerialPort->setPortName(ui->comboBox_portName->currentText()); //设置串口号
SerialPort->setBaudRate(ui->comboBox_BaudRate->currentText().toInt()); //设置波特率
if(ui->comboBox_DataBits->currentText() == "8"){
SerialPort->setDataBits(QSerialPort::Data8); //设置数据位为8位
}
if(ui->comboBox_Parity->currentText() == "无校验"){
SerialPort->setParity(QSerialPort::NoParity); //设置校验位为无校验
}
if(ui->comboBox_StopBits->currentText() == "1"){
SerialPort->setStopBits(QSerialPort::OneStop); //设置停止位为1位
}
/***** 打开串口 ****/
bool ok = false;
if(ui->pushButton_open->text() == "打开串口")
{
ok = SerialPort->open(QIODevice::ReadWrite);
if(ok == true) //串口打开成功
{
ui->groupBox_data->setEnabled(true);
ui->pushButton_open->setText("关闭串口");
}
else
{
QMessageBox::warning(this,"警告","串口打开失败,请检查串口参数或串口已被占用");
return ;
}
}else
{
SerialPort->close(); //关闭串口
ui->pushButton_open->setText("打开串口");
ui->groupBox_data->setEnabled(false);
}
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::GetSystenSerilPort()
{
QList<QSerialPortInfo> list_SerialPortInfo = QSerialPortInfo::availablePorts(); /*** 获取系统可用串口列表 ***/
ui->comboBox_portName->clear(); /** 清空 串口号的下拉选项框 ***/
for(QSerialPortInfo value : list_SerialPortInfo)
{
ui->comboBox_portName->addItem(value.portName()); /*** 将串口名称添加到 UI 的串口号下拉选项框中 ***/
}
}
3.音乐播放 (.mp3 .wav .mp4都可播放)
1.头文件
#include <QMainWindow>
/***** 多媒体音视频播放类 ****/
#include <QMediaPlayer> /*** 多媒体播放类 ***/
#include <QMediaPlaylist>/*** 多媒体播放列表类 ***/
/***** 对话框相关类 *****/
#include <QFileDialog> /** 文件对话框 ***/
2.定义播放对象,和播放列表对象,并且实列化,把播放列表设置到播放器里面
QMediaPlayer *MediaPlayer; /*** 多媒体播放类 ***/
QMediaPlaylist *MediaPlaylist; /*** 多媒体播放列表类 ***/
/**** 申请多媒体播放类空间 ****/
MediaPlayer = new QMediaPlayer(this);
MediaPlaylist = new QMediaPlaylist(this);
/**** 将播放列表设置到播放器中 ****/
MediaPlayer->setPlaylist(MediaPlaylist);
3.设置时间的函数 与建立信号连接 (获取音乐时间的总长度,并且计算)
connect(MediaPlayer,SIGNAL(durationChanged(qint64)),this,SLOT(slot_MediaPlayer_durationChanged(qint64)));
/******** 时间转换函数 *******/
void time_cycle(QString &time,qint64 msec)
{
/**** 计算总时间 ****/
int seconds = msec / 1000; //秒钟
int minute = seconds / 60; //分钟
int hour = minute / 60 % 24; //小时
if(hour == 0)
{
time = QString::number(minute%60) + ":" + QString::number(seconds%60);
}
else
{
time = QString::number(hour%24) + ":" + QString::number(minute%60) + ":" + QString::number(seconds%60);
}
}
void Player::slot_MediaPlayer_durationChanged(qint64 dura)
{
ui->horizontalSlider_progress->setMaximum(dura);
time_cycle(time2,dura); /** 调用时间转换算法 函数**/
ui->label_ratio->setText(time1 + "/" + time2);
ui->label_name->setText(ui->listWidget->currentItem()->text());
}
4.视屏播放(mp4)
/**** 将Paly播放器数据输出到UI ,需要解码器的支持 *****/
MediaPlayer->setVideoOutput(ui->VideoWidget);
5.加入本地的音乐文件
void Player::slot_pushButton_add()
{
QList<QUrl> file_Urls = QFileDialog::getOpenFileUrls(this,"添加音乐",QUrl("C:\\Users\\Administrator\\Music"),
"音乐 (*.mp3 *.WAV) ;;视频 (*.mp4 *.avi) ;;所有文件 (*.*)");//添加音乐文件
for(int i = 0; i < file_Urls.size() ; i++)
{
ui->listWidget->addItem(file_Urls[i].fileName()); //将文件名添加到 ListWidget 的UI控件显示
MediaPlaylist->addMedia(QMediaContent(file_Urls[i])); //将文件添加到里面 (播放列表)
}
}
6.设置音乐播放速度的函数
void Player::slot_comboBox_rate(QString text)
{
float rate = text.toFloat();//把QString 类型变为 float 类型
MediaPlayer->setPlaybackRate(rate);//调节倍速
}
7.设置 正在播放的音乐 现在的时长 (包括建立连接)
connect(MediaPlayer,SIGNAL(positionChanged(qint64)),this,SLOT(slot_MediaPlayer_positionChanged(qint64)));//建立连接
void Player::slot_MediaPlayer_positionChanged(qint64 posi)
{
ui->horizontalSlider_progress->setValue(posi);
time_cycle(time1,posi); /** 调用时间转换算法 函数**/
ui->label_ratio->setText(time1 + "/" + time2);
}
8.音乐播放 静音模式
函数:MediaPlayer->setMuted();
9.设置音乐现在的播放进度 (包括信号连接)
horizontalSlider_progress,SIGNAL(valueChanged(int)),this,SLOT(slot_horizontalSlider_progress(int)));//信号连接
void Player::slot_horizontalSlider_progress(int value)
{
if(ui->horizontalSlider_progress->isSliderDown() == true)
{
MediaPlayer->setPosition(value);
}
}
10.设置声音播放的大小 (包括信号连接)
comboBox_rate,SIGNAL(currentTextChanged(QString)),this,SLOT(slot_comboBox_rate(QString)));
void Player::slot_comboBox_rate(QString text)
{
float rate = text.toFloat();
MediaPlayer->setPlaybackRate(rate);
}
11.一些音乐播放的基本操作, (播放,暂停,。。。。。)
connect(ui->pushButton_play,SIGNAL(clicked(bool)),MediaPlayer,SLOT(play()));//播放
connect(ui->pushButton_pause,SIGNAL(clicked(bool)),MediaPlayer,SLOT(pause()));//暂停
connect(ui->pushButton_stop,SIGNAL(clicked(bool)),MediaPlayer,SLOT(stop()));//停止
connect(ui->pushButton_next,SIGNAL(clicked(bool)),MediaPlaylist,SLOT(next()));//下一首
connect(ui->pushButton_previous,SIGNAL(clicked(bool)),MediaPlaylist,SLOT(previous()));//上一首
ui 设计界面
头文件
#ifndef PLAYER_H
#define PLAYER_H
#include <QMainWindow>
/***** 多媒体音视频播放类 ****/
#include <QMediaPlayer> /*** 多媒体播放类 ***/
#include <QMediaPlaylist>/*** 多媒体播放列表类 ***/
/***** 对话框相关类 *****/
#include <QFileDialog> /** 文件对话框 ***/
QT_BEGIN_NAMESPACE
namespace Ui { class Player; }
QT_END_NAMESPACE
class Player : public QMainWindow
{
Q_OBJECT
public:
Player(QWidget *parent = nullptr);
~Player();
public:
void Media_Init();
private:
Ui::Player *ui;
QMediaPlayer *MediaPlayer; /*** 多媒体播放类 ***/
QMediaPlaylist *MediaPlaylist; /*** 多媒体播放列表类 ***/
QString time1; //当前时长
QString time2; //总时长
public slots:
void slot_pushButton_add();
void slot_comboBox_rate(QString text);
void slot_MediaPlaylist(int index);
void slot_pushButton_delete();
/***** 进度相关槽函数 *****/
void slot_MediaPlayer_durationChanged(qint64 dura); //总时长发生改变对接该槽函数
void slot_MediaPlayer_positionChanged(qint64 posi); //进度时间改变
void slot_horizontalSlider_progress(int value); //进度滑块值改变对接该槽函数
/***** 声音相关槽函数 *****/
void slot_checkBox_volume(bool ok);
};
#endif // PLAYER_H
。cpp文件
#include "player.h"
#include "ui_player.h"
Player::Player(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::Player)
{
ui->setupUi(this);
/**** 申请多媒体播放类空间 ****/
MediaPlayer = new QMediaPlayer(this);
MediaPlaylist = new QMediaPlaylist(this);
/**** 将播放列表设置到播放器中 ****/
MediaPlayer->setPlaylist(MediaPlaylist);
/**** 将自带的音乐文件资源添加到播放器 ****/
//Media_Init();
/**** 初始化音乐播放器 ******/
MediaPlayer->setVolume(ui->horizontalSlider_volume->value()); //初始化音量为UI界面的音量
/**** 将Paly播放器数据输出到UI ,需要解码器的支持 *****/
MediaPlayer->setVideoOutput(ui->VideoWidget);
/**** 信号槽操作播放列表 *****/
connect(ui->pushButton_add,SIGNAL(clicked(bool)),this,SLOT(slot_pushButton_add()));
connect(ui->pushButton_delete,SIGNAL(clicked(bool)),this,SLOT(slot_pushButton_delete()));
/**** 信号槽操作播放器 *******/
connect(ui->pushButton_play,SIGNAL(clicked(bool)),MediaPlayer,SLOT(play()));
connect(ui->pushButton_pause,SIGNAL(clicked(bool)),MediaPlayer,SLOT(pause()));
connect(ui->pushButton_stop,SIGNAL(clicked(bool)),MediaPlayer,SLOT(stop()));
connect(ui->pushButton_next,SIGNAL(clicked(bool)),MediaPlaylist,SLOT(next()));
connect(ui->pushButton_previous,SIGNAL(clicked(bool)),MediaPlaylist,SLOT(previous()));
connect(ui->horizontalSlider_volume,SIGNAL(valueChanged(int)),MediaPlayer,SLOT(setVolume(int)));
connect(ui->comboBox_rate,SIGNAL(currentTextChanged(QString)),this,SLOT(slot_comboBox_rate(QString)));
connect(MediaPlaylist,SIGNAL(currentIndexChanged(int)),this,SLOT(slot_MediaPlaylist(int)));
connect(ui->listWidget,SIGNAL(currentRowChanged(int)),MediaPlaylist,SLOT(setCurrentIndex(int)));
/************ 进度相关信号槽功能 *************/
connect(MediaPlayer,SIGNAL(durationChanged(qint64)),this,SLOT(slot_MediaPlayer_durationChanged(qint64)));
connect(ui->horizontalSlider_progress,SIGNAL(valueChanged(int)),this,SLOT(slot_horizontalSlider_progress(int)));
connect(MediaPlayer,SIGNAL(positionChanged(qint64)),this,SLOT(slot_MediaPlayer_positionChanged(qint64)));
/************ 声音按钮信号槽 ******************/
connect(ui->checkBox_volume,SIGNAL(clicked(bool)),this,SLOT(slot_checkBox_volume(bool)));
#if 0 //单文件
MediaPlayer->setMedia(QMediaContent(QUrl("qrc:/音乐歌曲素材/噪 - 印度神曲Nijamena.mp3")));
MediaPlayer->play(); /*** 播放 ***/
#endif
}
void Player::slot_horizontalSlider_progress(int value)
{
if(ui->horizontalSlider_progress->isSliderDown() == true)
{
MediaPlayer->setPosition(value);
}
}
void Player::slot_checkBox_volume(bool ok)
{
MediaPlayer->setMuted(ok);
if(ok == true)
{
ui->checkBox_volume->setIcon(QIcon(":/音乐播放器图片素材/jingyin.png")); //静音
}
else
{
ui->checkBox_volume->setIcon(QIcon(":/音乐播放器图片素材/shengyin.png")); //开声音
}
}
/******** 时间转换函数 *******/
void time_cycle(QString &time,qint64 msec)
{
/**** 计算总时间 ****/
int seconds = msec / 1000; //秒钟
int minute = seconds / 60; //分钟
int hour = minute / 60 % 24; //小时
if(hour == 0)
{
time = QString::number(minute%60) + ":" + QString::number(seconds%60);
}
else
{
time = QString::number(hour%24) + ":" + QString::number(minute%60) + ":" + QString::number(seconds%60);
}
}
void Player::slot_MediaPlayer_durationChanged(qint64 dura)
{
ui->horizontalSlider_progress->setMaximum(dura);
time_cycle(time2,dura); /** 调用时间转换算法 函数**/
ui->label_ratio->setText(time1 + "/" + time2);
ui->label_name->setText(ui->listWidget->currentItem()->text());
}
void Player::slot_MediaPlayer_positionChanged(qint64 posi)
{
ui->horizontalSlider_progress->setValue(posi);
time_cycle(time1,posi); /** 调用时间转换算法 函数**/
ui->label_ratio->setText(time1 + "/" + time2);
}
void Player::slot_pushButton_delete()
{
int row = ui->listWidget->currentRow();
delete ui->listWidget->takeItem(row);
MediaPlaylist->removeMedia(row);
}
void Player::slot_MediaPlaylist(int index)
{
int row = index;
ui->listWidget->setCurrentRow(row);
}
void Player::slot_comboBox_rate(QString text)
{
float rate = text.toFloat();
MediaPlayer->setPlaybackRate(rate);
}
void Player::Media_Init()
{
{
QUrl url("qrc:/音乐歌曲素材/噪 - 印度神曲Nijamena.mp3");
ui->listWidget->addItem(url.fileName()); //将文件名添加到 ListWidget 的UI控件显示
MediaPlaylist->addMedia(QMediaContent(url)); //将文件添加到里面
}
{
QUrl url("qrc:/音乐歌曲素材/果冻 - 成功没有退路.mp3");
ui->listWidget->addItem(url.fileName()); //将文件名添加到 ListWidget 的UI控件显示
MediaPlaylist->addMedia(QMediaContent(url)); //将文件添加到里面
}
{
QUrl url("qrc:/音乐歌曲素材/蒋蒋 _ 朱贺 - 爱德华的小说.mp3");
ui->listWidget->addItem(url.fileName()); //将文件名添加到 ListWidget 的UI控件显示
MediaPlaylist->addMedia(QMediaContent(url)); //将文件添加到里面
}
}
void Player::slot_pushButton_add()
{
QList<QUrl> file_Urls = QFileDialog::getOpenFileUrls(this,"添加音乐",QUrl("C:\\Users\\Administrator\\Music"),
"音乐 (*.mp3 *.WAV) ;;视频 (*.mp4 *.avi) ;;所有文件 (*.*)");
for(int i = 0; i < file_Urls.size() ; i++)
{
ui->listWidget->addItem(file_Urls[i].fileName()); //将文件名添加到 ListWidget 的UI控件显示
MediaPlaylist->addMedia(QMediaContent(file_Urls[i])); //将文件添加到里面
}
}
Player::~Player()
{
delete ui;
}