我们大家都知道QT5 自带的界面不是那么美观,并且每个软件我们都发现他们的边框是自定义的,所以我决定写一篇这样的博文,也许已经有许许多多篇大牛写的论文了,但我还是想写一篇记录自己的学习QT的历程

首先,我们得在相应的构造函数中写入无边框的代码(例如博主想要mywidget变为无边框)

setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);

//设置边框状态,没边框之后,必须要自己写一个鼠标事件来拖动它

setMouseTracking(true); //打开鼠标跟踪事件

我们要有三个函数,press,Release,以及move,还要有bool press; 判断是否按了鼠标,以及QPoint start_pos;记录起始位置,QPoint end_pos;记录终点位置,而他们的差值就是我们要移动多远。例如起始位置是(0,0)终点位置是(200,300),那我们的无边框的界面就移动(200,300)个单位。最重要的事,必须初始化press=flase;因为你刚开始没按鼠标。

void mywidget::mousePressEvent(QMouseEvent *e)
{
press = true;
start_pos=e->pos();
}
void mywidget::mouseMoveEvent(QMouseEvent *e)
{
if(press)
{
QPoint end_pos = e->globalpos();
//在移动的过程中,坐标一直在变,只有当鼠标松开的时候,press变为false,坐标确定,开始移动窗口
this->move(end_pos-start_pos);
}
}
void mywidget::mouseReleaseEvent(QMouseEvent *)
{
press=false; //用来结束mouseMoveEvent中的坐标变化,确定终点坐标
}

作者:Ten10

参考资料来源于百度。属于博主原创,转载请注明出处

qt 5 小练习 创建无边框界面的更多相关文章

  1. WPF 创建无边框的圆角窗口

    原文:WPF 创建无边框的圆角窗口 如题所述,在WPF中要创建一个没有边框且为圆角的窗体,有如下几步工作要进行: 第一步:去掉窗体默认样式的边框 首先将窗体的背景设为透明,将允许透明的属性设置为Tru ...

  2. 【Qt】Qt之自定义界面(实现无边框、可移动)【转】

    简述 UI设计是指对软件的人机交互.操作逻辑.界面美观的整体设计.好的UI设计不仅是让软件变得有个性.有品位,还要让软件的操作变得舒适简单.自由,充分体现软件的定位和特点. 爱美之心人皆有之.其实软件 ...

  3. Qt之自定义界面(实现无边框、可移动)

    简述 UI设计是指对软件的人机交互.操作逻辑.界面美观的整体设计.好的UI设计不仅是让软件变得有个性.有品位,还要让软件的操作变得舒适简单.自由,充分体现软件的定位和特点. 爱美之心人皆有之.其实软件 ...

  4. 36.QT-解决无边框界面拖动卡屏问题(附带源码)

    1.简介 看到很多才学QT的人都会问为啥无边框拖动为啥会花屏? 那是因为你每次拖动的过程中都一直在调用move()函数让QT重新绘制界面,如果资源过大,就会导致当前图形还未绘制完,便又重新改变坐标了, ...

  5. Qt编写自定义控件67-通用无边框

    一.前言 在之前的一篇文章中写过一个通用的移动控件,作用就是用来传入任意的widget控件,可以在父类容器中自由移动.本篇文章要写的是一个通用的无边框类,确切的说这不叫控件应该叫组件才对,控件是要看得 ...

  6. 使用WPF创建无边框窗体

    一.无边框窗口添加窗口阴影 实际上在WPF中添加无边框窗口的窗口阴影十分简单. 首先,设置WindowStyle="None"以及AllowsTransparency=" ...

  7. CreateWindow创建无边框 可拉伸窗体

    createwindow 定义 HWND WINAPI CreateWindow( _In_opt_ LPCTSTR lpClassName, _In_opt_ LPCTSTR lpWindowNam ...

  8. OpenCV 学习笔记(16)open创建无边框的显示窗口

    https://blog.csdn.net/weixin_41794771/article/details/93198098 讲解地址 // 1获取窗口句柄 winName 窗口名字 HWND win ...

  9. javaScript创建无边框iframe兼容ie

    <script>var m_iframe=document.createElement("iframe");m_iframe.scrolling="no&qu ...

随机推荐

  1. sql时间段算法

    需求:领导要求写时间段算法,格式如下 :-: :-: :-: :-: :-: :-: :-: :-: :-: :-: :-: :-: :-: :-: :-: :-: 一小时制 :-: :-: :-: ...

  2. 深入浅出js中的this(一)

    Q:this是什么? A:this是Javascript语言的一个关键字,它代表函数运行时,自动生成的一个内部对象,在每个 function 中自动根据作用域(scope) 确定, 指向的是此次调用者 ...

  3. windows下回车与换行符

    windows下回车与换行符 从键盘输入的数据一般是ASCII码,也就是文本文件,在送到计算机内存时,回车和换行符转换成一个换行符(也就是说回车和换行符在windows文本中是两个字符),再从内存中以 ...

  4. Android之获取联系人

    Android入门中,记录学习中的遇到的问题和一些个人总结. 联系人数据库路径为:/data/data/com.android.providers.contacts/database/contacts ...

  5. gem 'logstash-devutils'

    需求 为了开发新的 logstash 插件 问题 原以为只是很简单的 bundle install 就能搞定的事情,实际却遇到了一堆问题. 1. clone git git@github.com:lo ...

  6. dede_addonarticle-普通文字表

    dede_addonarticle-普通文字表 dede_addonimages-图片集的表  dede_addoninfos-分类信息表    dede_addon开头的都是指的是内容模型系列   ...

  7. 有关line-height的见解

    line-height:简单的说就是行高,是两行文字之间基线的距离.基线是指在英语的书写的4线3格中,从上往下数的第三条线 1.line-height与行内框盒子模型 所有内联元素的样式表现都与行内框 ...

  8. http请求之referer头与防盗链

    在网页中的占用大流量的信息可以写成这个信息在网络上的url位置,这样就会减少本网站的流量,但是其他网站也 不会随意让你使用人家的资源,因为这样的情对人家的网站没有好处,会增加人家网站的流量,所以要防止 ...

  9. Extjs3 Combo实现百度搜索查询

    在Extjs中实现Combo手输模糊筛选出下拉框数据.之前一直利用的Combo的keyup来实时的请求数据库进行查询.最近发现了一个更好的方式:只需要引用一个ComboBoxQuery Ext.ns( ...

  10. 使用 ICharpCode.SharpZipLib 压缩指定目录结构

    今天做项目中遇见一个压缩问题,我的目录结构是树形菜单,文件在服务器存储是平面存储,没有目录结构,所以在下载指定目录的时候要构建目录结构,如下: 当我右键点击下载b目录文件夹的时候要Download   ...