当前位置:   article > 正文

#QT(MP3播放器-部分界面)

#QT(MP3播放器-部分界面)

1.IDE:QTCreator


2.实验:制作一个mps播放器,界面可以实现鼠标拖动


3.记录:

(1)network网络多线程

(2)Http

(3)QJsonObject封装JSON对象

(4)QMediaPlayer/Playist类应用

(5)SQLite存储搜索歌曲

A.画布覆盖

  1. void Widget::paintEvent(QPaintEvent *) //播放器画布
  2. {
  3. QPainter paint(this);
  4. paint.drawPixmap(0,0,width(),height(),QPixmap(":/imag/picture/background.jpg")); //绘制画布
  5. }

B.皮肤,信息,退出按钮 

C. 按钮图标透明化

a.勾选flat

b.在style-sheet填入以下代码

background-color:transparent

 

 c.禁止窗口大小改变,关闭窗口标题

  1. this->setFixedSize(this->geometry().size()); //设定窗口固定大小
  2. this->setWindowFlag(Qt::FramelessWindowHint); //关闭窗口标题

此时运行效果

d.加入搜索栏,UI设计

在如图两个按钮的style中加入以下代码,将搜索栏放在一个GroupBox内

  1. color:RGB(255,255,255);
  2. background-color:transparent;

 e.在pro文件中加入 network multimedia sql

QT       += core gui network multimedia sql

f.将以下库加入到widget.h文件中(QMediaPlaylist已经被移除)

  1. #include <QNetworkRequest>
  2. #include <QNetworkAccessManager>
  3. #include <QNetworkReply>
  4. #include <QEventLoop>
  5. #include <QJsonArray>
  6. #include <QJsonObject>
  7. #include <QMediaPlayer>
  8. //#include <QMediaPlaylist>
  9. #include <QSqlDatabase>
  10. #include <QSqlQuery>
  11. #include <QSqlError>
  12. #include <QMessageBox>
  13. #include <QTime>
  14. #include <math.h>
  15. #include <QMouseEvent>

4.代码

pro

  1. QT += core gui network multimedia sql
  2. greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
  3. CONFIG += c++17
  4. # You can make your code fail to compile if it uses deprecated APIs.
  5. # In order to do so, uncomment the following line.
  6. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
  7. SOURCES += \
  8. main.cpp \
  9. widget.cpp
  10. HEADERS += \
  11. widget.h
  12. FORMS += \
  13. widget.ui
  14. # Default rules for deployment.
  15. qnx: target.path = /tmp/$${TARGET}/bin
  16. else: unix:!android: target.path = /opt/$${TARGET}/bin
  17. !isEmpty(target.path): INSTALLS += target
  18. RESOURCES += \
  19. img.qrc

widget.h

  1. #ifndef WIDGET_H
  2. #define WIDGET_H
  3. #include <QWidget>
  4. #include <QNetworkRequest>
  5. #include <QNetworkAccessManager>
  6. #include <QNetworkReply>
  7. #include <QEventLoop>
  8. #include <QJsonArray>
  9. #include <QJsonObject>
  10. #include <QMediaPlayer>
  11. //#include <QMediaPlaylist>
  12. #include <QSqlDatabase>
  13. #include <QSqlQuery>
  14. #include <QSqlError>
  15. #include <QMessageBox>
  16. #include <QTime>
  17. #include <math.h>
  18. #include <QMouseEvent>
  19. QT_BEGIN_NAMESPACE
  20. namespace Ui {
  21. class Widget;
  22. }
  23. QT_END_NAMESPACE
  24. class Widget : public QWidget
  25. {
  26. Q_OBJECT
  27. public:
  28. Widget(QWidget *parent = nullptr);
  29. ~Widget();
  30. void paintEvent(QPaintEvent *); //处理背景画布(函数重新定义)
  31. private slots:
  32. void on_leave_pb_clicked(); //离开按钮按下时
  33. private:
  34. Ui::Widget *ui;
  35. protected:
  36. //音乐歌曲下载和播放
  37. void DownloadPlayer(QString album_id,QString hash);
  38. //访问HTTP网页
  39. void HttpAccessFunc(QString);
  40. //音乐的hash播放和ablum_id解析(使用JSON)
  41. void HashJsonAnalysis(QByteArray);
  42. //搜索音乐数据信息的JSON解析,解析出真正的音乐文件和歌词
  43. QString MusicJsonAnalysis(QByteArray);
  44. protected:
  45. //鼠标拖住窗口实现移动
  46. void mouseMoveEvent(QMouseEvent *event); //移动事件
  47. void mousePressEvent(QMouseEvent *event); //按下事件
  48. void mouseReleaseEvent(QMouseEvent *event); //释放事件
  49. private:
  50. //定义坐标
  51. QPoint m_mousepoint;
  52. QPoint movement;
  53. bool mousepress;
  54. };
  55. #endif // WIDGET_H

widget.cpp

  1. #include "widget.h"
  2. #include "ui_widget.h"
  3. #include <QPainter>
  4. #include <QDebug>
  5. Widget::Widget(QWidget *parent)
  6. : QWidget(parent)
  7. , ui(new Ui::Widget)
  8. {
  9. ui->setupUi(this);
  10. this->setFixedSize(this->geometry().size()); //设定窗口固定大小
  11. this->setWindowFlag(Qt::FramelessWindowHint); //关闭窗口标题
  12. }
  13. Widget::~Widget()
  14. {
  15. delete ui;
  16. }
  17. void Widget::paintEvent(QPaintEvent *) //播放器画布
  18. {
  19. QPainter paint(this);
  20. paint.drawPixmap(0,0,width(),height(),QPixmap(":/imag/picture/background.jpg")); //绘制画布
  21. }
  22. void Widget::on_leave_pb_clicked() //关闭按钮
  23. {
  24. close();
  25. }
  26. /******************************************************************************************************/
  27. //音乐歌曲下载和播放
  28. void Widget::DownloadPlayer(QString album_id,QString hash)
  29. {
  30. }
  31. //访问HTTP网页
  32. void Widget::HttpAccessFunc(QString)
  33. {
  34. }
  35. //音乐的hash播放和ablum_id解析(使用JSON)
  36. void Widget::HashJsonAnalysis(QByteArray)
  37. {
  38. }
  39. //搜索音乐数据信息的JSON解析,解析出真正的音乐文件和歌词
  40. QString Widget::MusicJsonAnalysis(QByteArray)
  41. {
  42. }
  43. /******************************************************************************************************/
  44. void Widget::mouseMoveEvent(QMouseEvent *event) //移动事件
  45. {
  46. if(mousepress)
  47. {
  48. QPoint movePos=event->globalPos(); //窗口初始位置
  49. move(movePos-m_mousepoint);
  50. }
  51. }
  52. void Widget::mousePressEvent(QMouseEvent *event) //按下事件
  53. {
  54. if(event->button()==Qt::LeftButton)
  55. mousepress=true;
  56. m_mousepoint=event->globalPos()-pos();
  57. }
  58. void Widget::mouseReleaseEvent(QMouseEvent *event) //释放事件
  59. {
  60. Q_UNUSED(event);
  61. // mousepress=false;
  62. }

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/216388
推荐阅读
相关标签
  

闽ICP备14008679号