源地址:http://blog.csdn.net/attilax/article/details/12343625
paip.提升用户体验---c++ qt自定义窗体(1)---标题栏的绘制
效果图:
作者Attilax , EMAIL:1466519819@qq.com
来源:attilax的专栏
地址:http://blog.csdn.net/attilax
第2步:添加自定义标题栏以及最小化,最大化.关闭按钮...还有左边的窗体小图标.. 2
第一步:去掉系统默认标题栏
////////////////////////////////////////////////////////////////
构造函数里添加以下代码.
setWindowFlags( Qt::FramelessWindowHint| Qt::WindowSystemMenuHint
| Qt::WindowMinimizeButtonHint);
Qt::FramelessWindowHint指明孪不要系统标题栏以及边框..当然附加在他们上面的事件也就没兰,需要重写..
Qt::WindowSystemMenuHint 指明可以在任务栏点击事件以及右键菜单.. 这个要有..
Qt::WindowMinimizeButtonHint 指明可以最小化,最大化.
第2步:添加自定义标题栏以及最小化,最大化.关闭按钮...还有左边的窗体小图标..
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
标题栏背景图片png格式一张..使用photoshop处理一下,我使用的是7.0 绿化版...14M..很不错..高度32pix
最小化,最大化.关闭按钮图片需要..还需要对应的激活状态图片,压下状态图片,共9张..大小32像素..
左边的窗体小图标一张..32像素..
添加标题栏,我是使用lable控件实现的..添加上K,设置个背景走ok兰..
最小化,最大化.关闭按钮,左边的窗体小图标,全部使用QPushButton,设置好mask,以及背景,请参考不规则按钮设置的方法..
使用qss设置好最小化,最大化.关闭按钮的激活状态,press状态下的图片切换..
第3步:添加标题栏拖曳事件..
////////////////////////////////////////////////
为了简单的,我直接使用了悬浮窗的拖曳技术.袖管拖曳窗体哪里都可以拖曳..
void IrregularWidget::mousePressEvent(QMouseEvent *event)
{
//按住左键可以托动窗口,按下右键关闭程序
if(event->button() == Qt::LeftButton)
{
m_CurrentPos = event->globalPos() - frameGeometry().topLeft();
qDebug()<<"---mouse left ---";
event->accept();
}
}
void IrregularWidget::mouseMoveEvent(QMouseEvent *event)
{
//resize window
/* if (event->buttons() && Qt::LeftButton)
{}
else */
if (event->buttons() && Qt::LeftButton)
{
move(event->globalPos() - m_CurrentPos);
event->accept();
}
}
第4步: 最大化,最小化, .关闭按钮事件:
////////////////////////////////////////////////////////////
//close
void MainWindowList::on_pushButton_5_clicked()
{
close();
}
//max
void MainWindowList::on_pushButton_6_clicked()
{
//最大化
if(this->isMaximized())
this->showNormal(); //恢复
else
showMaximized();
}
//最小化窗口函数
void MainWindowList::on_pushButton_7_clicked()
{
//系统自定义的最小化窗口函数
showMinimized();
}
5窗体图标点击事件..
6标题栏右击菜单事件
7标题栏双击事件
8边框拖曳更改大小事件 (待续)
9绘制自定义边框 (待续)
paip.提升用户体验---c++ qt自定义窗体(1)---标题栏的绘制的更多相关文章
-
paip.提升用户体验---c++ qt 取消gcc编译的警告信息.txt
paip.提升用户体验---c++ qt 取消gcc编译的警告信息.txt 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http:// ...
-
paip.提升用户体验----gcc c++ JIT-debugging 技术
paip.提升用户体验----gcc c++ JIT-debugging 技术 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http ...
-
paip.提升用户体验-----c++ gcc 命令在notepad++扩展中的配置..
paip.提升用户体验-----c++ gcc 命令在notepad++扩展中的配置.. 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址: ...
-
paip.提升用户体验--radio图片选择器 easyui 实现..
#paip.提升用户体验--radio图片选择器 easyui 实现.. =================================== ##原因... ------------------- ...
-
paip.提升用户体验--提升java的热部署热更新能力
paip.提升用户体验--提升java的热部署热更新能力 想让java做到php那么好的热部署能力 "fix online"/在线修复吗??直接在服务器上修改源码生效,无需重启应 ...
-
paip.提升用户体验---论文本编辑器的色彩方案
paip.提升用户体验---论文本编辑器的色彩方案 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.ne ...
-
【译】如何使用Vue过渡效果来提升用户体验
在Vue应用中添加过渡效果是一个可以使你的项目感觉更专业的简单方法.通过提升用户体验,可以使你的网站留住更多的用户以及提高转化率. 只需要简单的处理就可以获得巨大的回报,何乐而不为? 在这个指南中,我 ...
-
Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率..
Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率.. 1. hybrid App 1 1.1. Hybrid Ap ...
-
使用渐进式JPEG来提升用户体验
今天才认识到原来JPEG文件有两种保存方式他们分别是Baseline JPEG(标准型)和Progressive JPEG(渐进式).两种格式有相同尺寸以及图像数据,他们的扩展名也是相同的,唯一的区别 ...
随机推荐
-
MySQL主从复制实现
上回提到了用ThinkPHP框架来实现数据库的读写分离,现在就来简单说说MySQL的主从复制. 形式 一主一从(也就是这里要实现的形式) 主主复制 一主多从 多主一从(MySQL5.7开始支持) 联级 ...
-
markdown简要说明显示样式
markdown 什么是markdown: Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. Markdown具有一系列 ...
-
java 计算 1到10 的 阶层的和(采用递归的方法)
package hibernate; public class t { public static void main(String[] args) { System.out.println(jiec ...
-
My97DatePicker 没有权限问题
引自:http://blog.sina.com.cn/s/blog_4b7809800100wkv4.html 今天遇到了My97DatePicker在不同IE版本中使用时有时出现没有权限错误的问题, ...
-
db2 表空间容器调整
1.查看当前容器的分布,并确定如何调整 db2look -d sample -l -cor -dp -o dd.sql 2.给表空间添加容器 db2 "alter tablespace tb ...
-
百度广告联盟api probuf协议对接
百度的广告API使用的是不是通常的http协议,而是使用谷歌开源出来的probuf协议,具体介绍请参考:https://www.jianshu.com/p/b1f18240f0c7https://ww ...
-
Mittag-Leffer函数, Matlab内部函数
Mittag-Leffer函数: $E_{\alpha,\beta}(x) = \sum\limits^{\infty}_{k=0} \frac{x^k}{ \Gamma( \alpha k + \b ...
-
机器学习简要笔记(五)——Logistic Regression(逻辑回归)
1.Logistic回归的本质 逻辑回归是假设数据服从伯努利分布,通过极大似然函数的方法,运用梯度上升/下降法来求解参数,从而实现数据的二分类. 1.1.逻辑回归的基本假设 ①伯努利分布:以抛硬币为例 ...
-
对于读txt文件一点总结
txt 内容 中间有比如如空格,制表符(tab)在txt为空格符(Spaces).回车符.换行符,有空字符串等情况,在读取过滤中要充分考虑到 1:打开文件 var sr=new StreamReade ...
-
001.hadoop及hbase部署
一 环境准备 1.1 相关环境 系统:CentOS 7 #CentOS 6.x系列也可参考,转换相关命令即可. hadoop包:hadoop-2.7.0.tar.gz #下载官方地址:http://w ...