最近也换了公司,也换了新的工作,工资也象征性的涨了一点点,但是最近心里还是慌慌,不知道为什么,没有那种踏实感,感觉自己随时可以被抛弃的感觉。感觉自己在荒废时间,也感觉自己在浪费生命。

为了让自己在被抛弃的时候可以有一个养家糊口的工作,现在也得加深一下自己的技能了。给自己一个小目标,先把网易云音乐的界面实现了,其实这个是我很好的愿望了,只是自己懒得动,一直拖到现在。

先放一个参考依据

我们就以这个为主要,先来实现主界面,这里由于没有现成的素材,我也懒得去找相似素材,就展现我的PS渣渣技术了,全程资源抠图实现。

现在经过一上午的努力,终于做出点东西了,先看下图

通过截图软件发现,网易云音乐的界面实现也是隐藏得了原生窗口标题栏,所以,我以同理。

目前实现了该窗口隐藏界面口可拖拽移动

主要利用Qt QMouseEvent里面的

//鼠标按下
void mousePressEvent(QMouseEvent* event);
//鼠标移动
void mouseMoveEvent(QMouseEvent* event);
//鼠标释放
void mouseReleaseEvent(QMouseEvent* event);

  

来实现窗口的移动和拖拽

实现代码如下

/*
* 鼠标按下操作
* 记录当前坐标
*/
static QPoint last(0,0); //保存坐标
const int TITLE_HEIGHT = 50; //这里也可以使用宏定义,保存标题高度,也就是鼠标点击区域的高度
void MainWindow::mousePressEvent(QMouseEvent *event)
{
if(event->y()<TITLE_HEIGHT)
{
last = event->globalPos();
}
}
/*
* 鼠标移动函数
* 这里实时修改窗口的坐标
*/
void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
if(event->y()<TITLE_HEIGHT)
{
int dx = event->globalX() - last.x();
int dy = event->globalY() - last.y();
last = event->globalPos();
this->move(this->x()+dx,this->y()+dy);
}
}
/*
* 鼠标释放函数
*/
void MainWindow::mouseReleaseEvent(QMouseEvent *event)
{
if(event->y()<TITLE_HEIGHT)
{
int dx = event->globalX() - last.x();
int dy = event->globalY() - last.y();
this->move(this->x()+dx,this->y()+dy);
}
}

  

关于背景的实现,有小伙伴可能会发现,设置最下面的背景有问题,我一般用两种方式

1. 就是放一个QLabel,来作为背景

2. 使用绘制函数来绘制背景

在这版本中,我用的第二种方式,代码如下

/*
* 绘制函数
* 绘制程序北京
*/
void MainWindow::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter painter_mainback(this);
painter_mainback.drawPixmap(0,0,this->width(),this->height(),QPixmap(":/mianwindow/images/mainback.png")); }

 

因为我在这个版本里面,使用了绝对布局,所以,最大化按钮我只做了槽函数,但是没有实际功能。

左上角的LOGO也是抠图实现,使用QLabel来放一个资源就好了。

另外,我的发部分资源都会依赖Qss来连接,下面附上Qss内容

/*标题背景文件*/
QLabel#label_title_back
{
border-image:url(./images/title_back.png);
}
/*关闭按钮*/
QPushButton#pushButton_close
{
border-image:url(images/btn_close_n.png);
}
QPushButton::hover#pushButton_close
{
border-image:url(images/btn_close_h.png);
}
QPushButton::pressed#pushButton_close
{
border-image:url(images/btn_close_n.png);
}
/*最大化按钮*/
QPushButton#pushButton_max
{
border-image:url(images/btn_max_n.png);
}
QPushButton::hover#pushButton_max
{
border-image:url(images/btn_max_h.png);
}
QPushButton::pressed#pushButton_max
{
border-image:url(images/btn_max_n.png);
}
/*最小化按钮*/
QPushButton#pushButton_min
{
border-image:url(images/btn_min_n.png);
}
QPushButton::hover#pushButton_min
{
border-image:url(images/btn_min_h.png);
}
QPushButton::pressed#pushButton_min
{
border-image:url(images/btn_min_n.png);
}
/*迷你按钮*/
QPushButton#pushButton_mini
{
border-image:url(images/btn_mini_n.png);
}
QPushButton::hover#pushButton_mini
{
border-image:url(images/btn_mini_h.png);
}
QPushButton::pressed#pushButton_mini
{
border-image:url(images/btn_mini_n.png);
}
/*标题LOGO文件*/
QLabel#label_title_logo
{
border-image:url(./images/title_logo.png);
}

  好了,今天上午就实现了这些功能,希望对小伙伴有所帮助,可以加我微信交流,见下图

 

Qt-网易云音乐界面实现-1 窗口隐藏拖拽移动,自定义标题栏的更多相关文章

  1. Android 开发之网易云音乐(或QQ音乐)的播放界面转盘和自定义SeekBar的实现

    这个东西我在eoeAndroid上首发的,但没有详细的实现说明:http://www.eoeandroid.com/thread-317901-1-1.html 在csdn上进行详细的说明吧.(同时上 ...

  2. Flutter仿网易云音乐:播放界面

    写在前头 本来是要做一个仿网易云音乐的flutter项目,但是因为最近事情比较多,项目周期跨度会比较长,因此分几个步骤来完成.这是仿网易云音乐项目系列文章的第一篇.没有完全照搬网易云音乐的UI,借鉴了 ...

  3. 关于linux下安装并打开网易云音乐——v 1.0.0

    首先,在网易云音乐官网的下载页面下载linux版本网易云音乐安装包(.deb文件) 下载好之后,在下载文件夹中双击打开文件,等待安装完毕 安装完成之后,直接双击图标是打不开的 需要用管理员命令打开 c ...

  4. Qt-网易云音乐界面实现-3 音乐名片模块的实现

    这个模块其实我是不知道该叫什么的,暂时就叫做音乐名片模块吧,这可以看到,这个模块简单的显示以下信息. 1. 歌曲名称 2. 歌曲歌唱者 3. 歌曲封面 4. 喜欢歌曲的按钮 5. 分享歌曲的按钮 6. ...

  5. Qt-网易云音乐界面实现-2 红红的程序运行图标,和相似下方音乐条

    被调出来出差了,这次出差可以说是非常不开心,这次出差也算给我自己提了个醒吧,那就是注意自己的精力,自己的口碑,和比人对自己的信任.具体内容如下 我们公司有一款硬件的设备的电路是外包给某个人来做的,这个 ...

  6. Ubuntu 16.04 一系列软件安装命令,包括QQ、搜狗、Chrome、vlc、网易云音乐安装方法

    1 简介 Ubuntu 16.04安装完后,还需要做一些配置才能愉快的使用,包括添加软件源.安装搜狗输入法.Chrome浏览器.网易云音乐.配置快捷键.安装git等等,下面就跟着我来配置吧,just ...

  7. UWP 动画系列之模仿网易云音乐动画

    一.前言 最近在弄毕业设计(那时坑爹选了制作个UWP商店的APP),一个人弄得烦躁,在这里记录一些在做毕业设计时的学习过程.由于我的毕业设计是做一个音乐播放器,那么Windows商店上优秀的软件当然是 ...

  8. 使用网易云音乐,丢掉QQ音乐吧

    我是一个听音乐的重度用户,基本上每天大约有三分之一的时间里我在使用网易云音乐去听音乐.包括工作写代码的时候,跑步的时候,去上班的途中我都去听.首先需要声明的是,在这里我不是故意的去抹黑其他的音乐产品, ...

  9. 网易云音乐 歌词制作软件 BesLyric

    导读 哈哈,喜欢网易云音乐,又愁于制作歌词的童鞋有福啦! BesLyric 为你排忧解难! 上个周末在用网易云音乐听歌,发现一些喜欢的歌还没有滚动歌词,然而网易云音乐还没有自带的歌词编辑功能,要制作歌 ...

随机推荐

  1. SQL Server之JSON 函数

    SQL Server 2005开始支持XML数据类型,提供原生的XML数据类型.XML索引及各种管理或输出XML格式的函数.随着JSON的流行,SQL Server2016开始支持JSON数据类型,不 ...

  2. 【转】Json判断是否存在某个属性和遍历各个属性和值

    var field='uid'; var jsonObj={uid:'001'}; 一. jsonObj[field] != undefined //注意:如果field值正好是undefined那就 ...

  3. Spring中手动增加配置文件中占位符引用的变量

    在项目中遇到一个这样的需求,项目的配置文件由外部传入,这时spring配置文件那些占位符变量该如何取值呢? 解决这个问题的做法有几种,我想到的大概有以下三种: 1.通过系统属性来实现,把外部传入的配置 ...

  4. Docker镜像搭建Linux下samba共享目录

    Samba 是 SMB/CIFS 网络协议的重新实现, 它作为 NFS 的补充使得在 Linux.OS/2.DOS 和 Windows 系统中进行文件共享.打印机共享更容易实现.SMB协议是客户机/服 ...

  5. [USACO08JAN]Running

    嘟嘟嘟 这很显然是一道dp题. 令dp[i][j]表示第 i 分钟末,疲劳度为 j 是的最大跑步距离,则 dp[i][0] = max(dp[i - 1][0], max(dp[i - j][j])) ...

  6. 分布式唯一ID的几种生成方案

    前言 在互联网的业务系统中,涉及到各种各样的ID,如在支付系统中就会有支付ID.退款ID等.那一般生成ID都有哪些解决方案呢?特别是在复杂的分布式系统业务场景中,我们应该采用哪种适合自己的解决方案是十 ...

  7. VMware虚拟机安装Mac OS X

    安装mac系统学习网站来源:http://blog.csdn.net/hamber_bao/article/details/51335834 1.下载安装VMware workstation (1)首 ...

  8. kendo ui - MultiSelect 多选系列

    kendo-ui 官网:https://www.telerik.com/documentation 初始化 grid: 引入文件: <link rel="stylesheet" ...

  9. zabbix 模板 创建逻辑 + 主动模式-被动模式

    模板通常包含了item.trigger.graph(图形).application以及low-level discovery rule:模板可以直接链接至某个主机: 模板包含一系列的item,trig ...

  10. kubernetes 比较好的案例-创建tomcat-mysql集群

    安装部署一个tomcat+mysql应用 apiVersion: v1 kind: ReplicationController metadata: name: myweb spec:   //spec ...