行业知识
#QT(MP3播放器-部分界面)
2026-11-08 13:45:09
来源:互联网转载
1.IDE:QTCreator
2.实验:制作一个mps播放器,界面可以实现鼠标拖动
3.记录:
(1)network���络多线程
(2)Http
(3)QJsonObject封装JSON对象
(4)QMediaPlayer/Playist类应用
(5)SQLite存储搜索歌曲
A.画布覆盖
void Widget::paintEvent(QPaintEvent *) //播放器画布{ QPainter paint(this); paint.drawPixmap(0,0,width(),height(),QPixmap(":/imag/picture/background.jpg")); //绘制画布} B.皮肤,信息,退出按钮
C. 按钮图标透明化
a.勾选flat
b.在style-sheet填入以下代码
background-color:transparent
c.禁止窗口大小改变,关闭窗口标题
this->setFixedSize(this->geometry().size()); //设定窗口固定大小 this->setWindowFlag(Qt::FramelessWindowHint); //关闭窗口标题
此时运行效果
d.加入搜索栏,UI设计
在如图两个按钮的style中加入以下代码,将搜索栏放在一个GroupBox内
color:RGB(255,255,255);background-color:transparent;
e.在pro文件中加入 network multimedia sql
QT += core gui network multimedia sql
f.将以下库加入到widget.h文件中(QMediaPlaylist已经被移除)
#include #include #include #include #include #include #include //#include #include #include #include #include #include #include #include
4.代码
pro
QT += core gui network multimedia sqlgreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += c++17# You can make your code fail to compile if it uses deprecated APIs.# In order to do so, uncomment the following line.#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0SOURCES += \ main.cpp \ widget.cppHEADERS += \ widget.hFORMS += \ widget.ui# Default rules for deployment.qnx: target.path = /tmp/$${TARGET}/binelse: unix:!android: target.path = /opt/$${TARGET}/bin!isEmpty(target.path): INSTALLS += targetRESOURCES += \ img.qrc widget.h
#ifndef WIDGET_H#define WIDGET_H#include #include #include #include #include #include #include #include //#include #include #include #include #include #include #include #include QT_BEGIN_NAMESPACEnamespace Ui {class Widget;}QT_END_NAMESPACEclass Widget : public QWidget{ Q_OBJECTpublic: Widget(QWidget *parent = nullptr); ~Widget(); void paintEvent(QPaintEvent *); //处理背景画布(函数重新定义)private slots: void on_leave_pb_clicked(); //离开按钮按下时private: Ui::Widget *ui;protected: //音乐歌曲下载和播放 void DownloadPlayer(QString album_id,QString hash); //访问HTTP网页 void HttpAccessFunc(QString); //音乐的hash播放和ablum_id解析(使用JSON) void HashJsonAnalysis(QByteArray); //搜索音乐数据信息的JSON解析,解析出真正的音乐文件和歌词 QString MusicJsonAnalysis(QByteArray);protected: //鼠标拖住窗口实现移动 void mouseMoveEvent(QMouseEvent *event); //移动事件 void mousePressEvent(QMouseEvent *event); //按下事件 void mouseReleaseEvent(QMouseEvent *event); //释放事件private: //定义坐标 QPoint m_mousepoint; QPoint movement; bool mousepress;};#endif // WIDGET_H widget.cpp
#include "widget.h"#include "ui_widget.h"#include #include Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget){ ui->setupUi(this); this->setFixedSize(this->geometry().size()); //设定窗口固定大小 this->setWindowFlag(Qt::FramelessWindowHint); //关闭窗口标题}Widget::~Widget(){ delete ui;}void Widget::paintEvent(QPaintEvent *) //播放器画布{ QPainter paint(this); paint.drawPixmap(0,0,width(),height(),QPixmap(":/imag/picture/background.jpg")); //绘制画布}void Widget::on_leave_pb_clicked() //关闭按钮{ close();}/******************************************************************************************************///音乐歌曲下载和播放void Widget::DownloadPlayer(QString album_id,QString hash){}//访问HTTP网页void Widget::HttpAccessFunc(QString){}//音乐的hash播放和ablum_id解析(使用JSON)void Widget::HashJsonAnalysis(QByteArray){}//搜索音乐数据信息的JSON解析,解析出真正的音乐文件和歌词QString Widget::MusicJsonAnalysis(QByteArray){}/******************************************************************************************************/void Widget::mouseMoveEvent(QMouseEvent *event) //移动事件{ if(mousepress) { QPoint movePos=event->globalPos(); //窗口初始位置 move(movePos-m_mousepoint); }}void Widget::mousePressEvent(QMouseEvent *event) //按下事件{ if(event->button()==Qt::LeftButton) mousepress=true; m_mousepoint=event->globalPos()-pos();}void Widget::mouseReleaseEvent(QMouseEvent *event) //释放事件{ Q_UNUSED(event); // mousepress=false;}
上一篇:游戏的服务器怎么创造角色?
下一篇:直播网站是怎么推广的?