360新版特性界面实现(2)
来源:互联网 发布:画卡通人物的软件 编辑:程序博客网 时间:2024/05/24 08:33
1.UI的结构
开始画图形界面,首先确定UI的大小,找到360新版特性界面的皮肤,可以看到:
4个不同的页面的像素为:680 * 370
而最顶层的一层透明页面像素为:680 * 372
如图:
QSize(680, 370):
QSize(680, 372):
现在可以确定下来,UI的大小为(680, 372);但4个页面只在370个像素空间中运动,最上面空余的为透明区域,其中在X轴(20-100)的矩形区域,为玻璃效果的区域,这些均为图片贴出。下面给个示意图:
在图中,2个像素空间中,红色区域使用Qt中的setMask函数来遮掩,绿色矩形区域为要显示的图片部分,此为玻璃效果。
所以剩下的所有控件均活动在矩形:点(0, 2) -> 点(680, 372)空间中。
在这张图中,画出了UI的设计框架,具体还是根据程序进行调整最佳位置。
2.画出最基本的背景图
只需重新实现QWidget的paintEvent事件,就可以达到上述所说的效果:
代码很简单,关键在于setMask函数的使用。
若要在一个矩形窗口中央画一个圆,以下步骤:
(1).先画出窗体
(2).在窗体大小的矩形QBitmap中以白色填充整张图
(3).在矩形中央以黑色画一个圆,用黑色填充这个圆
(4).setMask(bitmap)
此时效果就出来了,一个不规则窗体,圆。
这时候再加入图片,最基本的背景图就出来了。
new出2个QLabel标签来存放图片:
bg_top.png这张图必须置顶,Qt窗体中是基于堆栈窗体的,只需将m_pLabelBg1提升到栈顶即可,Qt提供了一个函数:raise。
当然这里涉及到很多控件的排序(栈排序),所以待所有控件都初始化完成后,再来控制也不迟。
3.画出4个页面
这里使用的方法是将4张图画到一个QLabel中的方法,该方法比较简单。
ok,现在样子基本上差不多了。
4.创建自定义山寨按钮
这4个按钮并不是标准的按钮,只需子类化QWidget,在QWidget中添加2个QLabel,一个存放图片,一个存放文本,就能做出这种效果来,来看看效果图:
从图中,可以看出要实现几个功能:
(1).2个QLabel的布局。
(2).实现鼠标3个事件:enterEvent, leaveEvent, mousePressEvent。
(3).重新实现paintEvent事件,绘制不同的效果。
(4).鼠标移动到该区域,改变鼠标指针形状。
至于第(2)点,
enterEvent:鼠标进入该区域,背景变透明模糊
leaveEvent:鼠标离开该区域,背景恢复正常
mousePressEvent:鼠标点击该区域,背景变透明模糊,明显。
绘制背景透明模糊的效果:
鼠标的几个事件:
5.设置样式
其实用函数也能设置,但我发现用css语法来编辑样式挺方便的,以后会专门来介绍样式的使用,正因为她的实用。
在CLabel中,用如下样式来设置字体和背景
6.画出4个按钮
在Preview360类中,创建4个按钮:
将4个CLabel按钮提升到栈顶:
但CLabel被press时,只能一个按钮为被press状态:
下一篇文章继续说明4张漂亮图的移动和窗体移动。。。
作者 : gzshun.
E-Mail: gzshuns#163.com (@)
转载请注明出处:http://blog.csdn.net/gzshun/article/details/7596542
开始画图形界面,首先确定UI的大小,找到360新版特性界面的皮肤,可以看到:
4个不同的页面的像素为:680 * 370
而最顶层的一层透明页面像素为:680 * 372
如图:
QSize(680, 370):
QSize(680, 372):
现在可以确定下来,UI的大小为(680, 372);但4个页面只在370个像素空间中运动,最上面空余的为透明区域,其中在X轴(20-100)的矩形区域,为玻璃效果的区域,这些均为图片贴出。下面给个示意图:
在图中,2个像素空间中,红色区域使用Qt中的setMask函数来遮掩,绿色矩形区域为要显示的图片部分,此为玻璃效果。
所以剩下的所有控件均活动在矩形:点(0, 2) -> 点(680, 372)空间中。
在这张图中,画出了UI的设计框架,具体还是根据程序进行调整最佳位置。
2.画出最基本的背景图
只需重新实现QWidget的paintEvent事件,就可以达到上述所说的效果:
代码很简单,关键在于setMask函数的使用。
若要在一个矩形窗口中央画一个圆,以下步骤:
(1).先画出窗体
(2).在窗体大小的矩形QBitmap中以白色填充整张图
(3).在矩形中央以黑色画一个圆,用黑色填充这个圆
(4).setMask(bitmap)
此时效果就出来了,一个不规则窗体,圆。
这时候再加入图片,最基本的背景图就出来了。
new出2个QLabel标签来存放图片:
bg_top.png这张图必须置顶,Qt窗体中是基于堆栈窗体的,只需将m_pLabelBg1提升到栈顶即可,Qt提供了一个函数:raise。
当然这里涉及到很多控件的排序(栈排序),所以待所有控件都初始化完成后,再来控制也不迟。
3.画出4个页面
这里使用的方法是将4张图画到一个QLabel中的方法,该方法比较简单。
ok,现在样子基本上差不多了。
4.创建自定义山寨按钮
这4个按钮并不是标准的按钮,只需子类化QWidget,在QWidget中添加2个QLabel,一个存放图片,一个存放文本,就能做出这种效果来,来看看效果图:
从图中,可以看出要实现几个功能:
(1).2个QLabel的布局。
(2).实现鼠标3个事件:enterEvent, leaveEvent, mousePressEvent。
(3).重新实现paintEvent事件,绘制不同的效果。
(4).鼠标移动到该区域,改变鼠标指针形状。
至于第(2)点,
enterEvent:鼠标进入该区域,背景变透明模糊
leaveEvent:鼠标离开该区域,背景恢复正常
mousePressEvent:鼠标点击该区域,背景变透明模糊,明显。
绘制背景透明模糊的效果:
鼠标的几个事件:
5.设置样式
其实用函数也能设置,但我发现用css语法来编辑样式挺方便的,以后会专门来介绍样式的使用,正因为她的实用。
在CLabel中,用如下样式来设置字体和背景
6.画出4个按钮
在Preview360类中,创建4个按钮:
将4个CLabel按钮提升到栈顶:
但CLabel被press时,只能一个按钮为被press状态:
下载地址:360新特性界面
下一篇文章继续说明4张漂亮图的移动和窗体移动。。。
作者 : gzshun.
E-Mail: gzshuns#163.com (@)
转载请注明出处:http://blog.csdn.net/gzshun/article/details/7596542
阅读全文
1 0
- 360新版特性界面实现(2)
- Qt日记(2)-360新版特性界面实现(2)
- Qt日记(2)-360新版特性界面实现(2)
- 360新版特性界面实现(1)
- 360新版特性界面实现(3)
- Qt日记(1)-360新版特性界面实现(1)
- Qt日记(3)-360新版特性界面实现(3)
- Qt日记(3)-360新版特性界面实现(3)
- Qt日记(1)-360新版特性界面实现(1)
- Qt日记(3)-360新版特性界面实现(3)
- Qt日记(1)-360新版特性界面实现
- OpenStack Mitaka新版特性
- 新版IDEA特性--JAVA
- google新版界面
- CSDN新版界面
- 迅雷新版界面看起来不错
- 新版Timeline的界面展示
- iOS程序更新后新特性介绍界面的实现
- Spark Streaming之容错机制以及事务语义
- 反射访问类的私有属性对象的私有方法
- 什么是作用域链
- sogou输入法出现乱码
- IDEA初见---输出HelloWorld,并打包成jar包
- 360新版特性界面实现(2)
- 省份城市实现二级联动效果
- 红黑树(RB-tree)比AVL树的优势在哪?
- ubuntu下让python脚本可直接运行
- HTML隐藏域作用
- 模版方法模式
- LintCode Jump Game 跳跃游戏
- Android 6.0 访问图库时,报错 requires android.permission.READ_EXTERNAL_STORAGE异常
- Linux命令(2)-df & du