网站后天添加文章不显示,南宁设计网站,一个网站上面有名优,免费建网站的作用QT mp3音乐播放器实现框架#xff0c;Qt鼠标事件#xff0c;网络编程#xff0c;QSqlite,Json解析#xff0c;HTTP请求等框架搭建UI设计mp3.hmp3.cpp隐藏窗口标题 最大化 最小化 关闭框架搭建
.pro添加
# 网络 添加多媒体 数据库
QT network multimedia sql添加头…
QT mp3音乐播放器实现框架Qt鼠标事件网络编程QSqlite,Json解析HTTP请求等框架搭建UI设计mp3.hmp3.cpp隐藏窗口标题 最大化 最小化 关闭框架搭建
.pro添加
# 网络 添加多媒体 数据库
QT network multimedia sql添加头文件
#include QWidget
#include QNetworkRequest //HTTP的URL请求管理类
#include QNetworkAccessManager //网络入口
#include QNetworkReply //网络应答
#include QEventLoop //网络请求
#include QJsonArray //解析数组
#include QJsonObject //解析对象
#include QMediaPlayer //媒体播放
#include QMediaPlaylist //媒体播放列表
#include QSqlDatabase //数据库
#include QSqlQuery //数据库查询
#include QSqlQueryModel //查询模式
#include QSqlError //数据库报错
#include QMessageBox //弹出信息框
#include QTime //hh:mm:ss
#include math.h //数学
#include QDebug
#include QMoveEvent //移动事件
#include QScreen //屏幕
//代码中引入头文件
#if (QT_VERSION QT_VERSION_CHECK(5,0,0))//qt当前版本qt5
#include QtWidgets
#endif
#if (QT_VERSION QT_VERSION_CHECK(6,0,0))//qt当前版本qt6
#include QtCore5Compat
#endif//.默认Qt6开启了高分屏支持界面会变得很大甚至字体发虚很多人会不习惯
//因为这种模式如果程序很多坐标计算没有采用devicePixelRatio进行运算的话
//100%会出现奇奇怪怪的问题因为坐标不准确了。要取消这种效果可以设置高分屏缩放因子。
#if (QT_VERSION QT_VERSION_CHECK(6,0,0))QGuiApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::Floor);
#endif#if (QT_VERSION QT_VERSION_CHECK(6,0,0))std::sort(ipv4s.begin(), ipv4s.end());
#endif
添加资源文件夹
UI设计 按钮风格 QPushButton QPushButton{
border-radius:0px;
background-repeat:no-repeat;
border:none;
background-position:canter canter;
}
QPushButton:hover
{background-color: rgba(230, 0, 0, 5);
}color: rgb(255, 255, 255);/*字体颜色白色*/
background-color: rgba(255, 255, 255,50);/*背景色 透明度50*/
font: 75 12pt Arial;QLineEdit color: rgb(255, 255, 255);/*字体颜色白色*/
background-color: rgba(255, 255, 255,50);/*背景色 透明度50*/
font: 75 12pt Arial;
border:2px solid;
border-color: rgb(0, 255, 0);mp3.h
#ifndef MP3_H
#define MP3_H#include QWidget
#include QNetworkRequest //HTTP的URL请求管理类
#include QNetworkAccessManager //网络入口
#include QNetworkReply //网络应答
#include QEventLoop //网络请求
#include QJsonArray //解析数组
#include QJsonObject //解析对象
#include QMediaPlayer //媒体播放
#include QMediaPlaylist //媒体播放列表
#include QSqlDatabase //数据库
#include QSqlQuery //数据库查询
#include QSqlQueryModel //查询模式
#include QSqlError //数据库报错
#include QMessageBox //弹出信息框
#include QTime //hh:mm:ss
#include math.h //数学
#include QDebug
#include QMoveEvent //移动事件
#include QScreen //屏幕
//代码中引入头文件
#if (QT_VERSION QT_VERSION_CHECK(5,0,0))//qt当前版本qt5
#include QtWidgets
#endif
#if (QT_VERSION QT_VERSION_CHECK(6,0,0))//qt当前版本qt6
#include QtCore5Compat
#endif//.默认Qt6开启了高分屏支持界面会变得很大甚至字体发虚很多人会不习惯因为这种模式如果程序很多坐标计算没有采用devicePixelRatio进行运算的话
//100%会出现奇奇怪怪的问题因为坐标不准确了。要取消这种效果可以设置高分屏缩放因子。
#if (QT_VERSION QT_VERSION_CHECK(6,0,0))QGuiApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::Floor);
#endif#if (QT_VERSION QT_VERSION_CHECK(6,0,0))std::sort(ipv4s.begin(), ipv4s.end());
#endifQT_BEGIN_NAMESPACE
namespace Ui { class MP3; }
QT_END_NAMESPACEclass MP3 : public QWidget
{Q_OBJECTpublic:MP3(QWidget *parent nullptr);~MP3();void paintEvent(QPaintEvent *event);private slots:void on_PB_close_clicked();void on_PB_Function_clicked();private:Ui::MP3 *ui;//音乐下载播放void DownloadPlayer(QString id, QString hash);//访问httpvoid DashJsonAnalysis(QByteArray json);//搜索音乐数据信息的json解析 解析出真正的音乐文件和歌曲QString MusicJsonAnalysis(QByteArray musicJson);//获取qt版本void GetQtVersion();//获取当前屏幕尺寸区域QRect getScreenRect(bool available);int getScreenIndex();protected:void mouseMoveEvent(QMouseEvent *event);void mouseReleaseEvent(QMouseEvent *event);void mousePressEvent(QMouseEvent *event);
private://定义坐标QPoint m_mousePoint;QPoint movepress;bool isMousePress;};
#endif // MP3_H
mp3.cpp
只是实现了鼠标窗口移动事件
#include mp3.h
#include ui_mp3.h
#include QPainterMP3::MP3(QWidget *parent): QWidget(parent), ui(new Ui::MP3)
{ui-setupUi(this);//固定窗口大小 宽 高this-setFixedSize(this-geometry().size());//隐藏窗口标题/*生成一个无边界的窗口。用户不能通过窗口系统移动或调整无边界窗口的大小。* 在x11上标志的结果取决于窗口管理器和它理解主题和/或网络提示的能力。* 大多数现有的现代窗口管理器都可以处理这个问题。*/this-setWindowFlag(Qt::FramelessWindowHint);
}MP3::~MP3()
{delete ui;
}//画主题背景
void MP3::paintEvent(QPaintEvent *event)
{QPainter painter(this);//画家要操作的部件painter.drawPixmap(0,0,QPixmap(:/Images/2041960.jpg));
}//关闭当前窗口
void MP3::on_PB_close_clicked()
{//this-close();qApp-quit();
}void MP3::DownloadPlayer(QString id, QString hash)
{}void MP3::DashJsonAnalysis(QByteArray json)
{}QString MP3::MusicJsonAnalysis(QByteArray musicJson)
{}void MP3::GetQtVersion()
{qDebug()qt当前版本 QT_VERSIONqt 6检查版本 QT_VERSION_CHECK(6,0,0);
}void MP3::mouseMoveEvent(QMouseEvent *event)
{if(isMousePress){QPoint movePos event-globalPos(); //当前鼠标移动坐标qDebug() movePos event-globalPos();this-move(movePos - m_mousePoint);//鼠标当前移动坐标-原始坐标 第二个位置}
}void MP3::mouseReleaseEvent(QMouseEvent *event)
{Q_UNUSED(event); //不使用isMousePress false;//鼠标松开
}void MP3::mousePressEvent(QMouseEvent *event)
{if(event-button() Qt::LeftButton)isMousePress true;//鼠标按压//窗口移动距离m_mousePoint event-globalPos() - this-pos(); //当前鼠标移动坐标-当前窗口坐标默认固定不变 第一个位置qDebug() globalPos event-globalPos();qDebug() this-pos this-pos(); //窗口当前坐标}
//
//功能页
void MP3::on_PB_Function_clicked()
{GetQtVersion();getScreenRect(true);
}//获取当前屏幕索引
int MP3::getScreenIndex()
{//需要对多个屏幕进行处理int screenIndex 0;
#if (QT_VERSION QT_VERSION_CHECK(5,0,0))int screenCount qApp-screens().count();qDebug()screenCount screenCount;
#elseint screenCount qApp-desktop()-screenCount();
#endifif (screenCount 1) {//找到当前鼠标所在屏幕QPoint pos QCursor::pos();qDebug()pos pos;for (int i 0; i screenCount; i) {
#if (QT_VERSION QT_VERSION_CHECK(5,0,0))if (qApp-screens().at(i)-geometry().contains(pos)) {
#elseif (qApp-desktop()-screenGeometry(i).contains(pos)) {
#endifscreenIndex i;break;}}}qDebug()screenIndex screenIndex;return screenIndex;
}//获取当前屏幕尺寸区域
QRect MP3::getScreenRect(bool available)
{QRect rect;int screenIndex getScreenIndex();if (available) {
#if (QT_VERSION QT_VERSION_CHECK(5,0,0))rect qApp-screens().at(screenIndex)-availableGeometry();
#elserect qApp-desktop()-availableGeometry(screenIndex);
#endif} else {
#if (QT_VERSION QT_VERSION_CHECK(5,0,0))rect qApp-screens().at(screenIndex)-geometry();
#elserect qApp-desktop()-screenGeometry(screenIndex);
#endif}qDebug()rect rect;return rect;
}
隐藏窗口标题 最大化 最小化 关闭
生成一个无边界的窗口。用户不能通过窗口系统移动或调整无边界窗口的大小。 在x11上标志的结果取决于窗口管理器和它理解主题和/或网络提示的能力。 大多数现有的现代窗口管理器都可以处理这个问题。
this-setWindowFlag(Qt::FramelessWindowHint);