QT去掉边框后窗口拖放控制大小及移动窗口

作者:收割者,适用平台:QT

在一般情况下,我们编写的窗口,都有一个标准的窗口框架,这个标准框架提供了标题栏及边框,而边框可以帮助我们通过拖放来控制窗口的大小,例如,当把鼠标指针放到上边框的时候,指针鼠标发生变化,这时按下鼠标左键的同时拖动鼠标,就可以改变窗口的大小,同样,当把鼠标指针放到左边,右边,四个角上等,鼠标指针都会发生相应的变化,但是有的时候,我们不需要窗口的标准框架,这时候,我们可以对顶层窗口(top-level)设置属性Qt::FramelessWindowHint,如果还需要保留点击任务栏时显示或最小化窗口,在添加属性Qt::WindowSystemMenuHint
| Qt::WindowMinimizeButtonHint。这样一来就去除了标准框架,只剩下客户区(MFC,WIN32中概念),很多软件的界面都去除了标准框架,然后进行美化,如QQ,迅雷,酷狗等,都没有windows普通窗口上的边框和标题栏。

但是这样一来却失去了边框带给我们的功能,探测鼠标的位置,改变指针的形状,拖动改变窗口的大小。针对QT平台,我编写了一个DLL,当中包含了代码实现了表框框架的这些功能,另外,由于没有了标题栏,在窗口的标题栏按下鼠标移动窗口的功能也失去了,本DLL也完成了这个功能。

至于这个dll中输出函数的使用方法,在头文件中已经有说明。

Debug版:http://download.csdn.net/detail/xinzhiyounizhiyouni/8521407

Release版:http://download.csdn.net/detail/xinzhiyounizhiyouni/8521413

本文原址:CSDN博客

时间: 2024-08-06 16:01:41

QT去掉边框后窗口拖放控制大小及移动窗口的相关文章

窗体去掉边框后不能拖动的问题

在C# WinForm中,边框不显示就会造成窗体无法拖动的情况,把下边的代码添加上去就可以解决. 1.导入命名空间using System.Runtime.InteropServices;2.输入如下代码 [DllImport("user32.dll")]public static extern bool ReleaseCapture();[DllImport("user32.dll")]public static extern bool SendMessage(I

C#中winform去掉边框后实现拖动功能

在winform中,当我们把窗体的属性中 FormBorderStyle 指示窗体的边框和标题栏的外观和行为的属性设置为None时,我们会发现拖动窗体的功能也随之消失,这时候我们可以使用MouseDown事件来注册拖动移动窗体的功能,利用Windows的API,实现代码如下 [DllImport("user32.dll")] public static extern bool ReleaseCapture(); [DllImport("user32.dll")] p

浏览器窗口可视区域大小

http://www.imooc.com/code/1702 浏览器窗口可视区域大小 获得浏览器窗口的尺寸(浏览器的视口,不包括工具栏和滚动条)的方法: 一.对于IE9+.Chrome.Firefox.Opera 以及 Safari: •  window.innerHeight - 浏览器窗口的内部高度 •  window.innerWidth - 浏览器窗口的内部宽度 二.对于 Internet Explorer 8.7.6.5: •  document.documentElement.cli

Qt 无边框窗体改变大小 完美实现(全部自己实现)

近期,做项目用到无边框窗体,令人蛋疼的是无边框窗体大小的改变要像右边框那样,上下左右四周,而且要流畅. 网上也找了些代码,发现居然还要连接到windows事件,这显然不合常理,后来自己新建了demo,写了一个小时,问题太多了,扔一边先不管了. 今天需要改进UI界面,没办法了,重新整理了下思路,没想到做出来了.下面来分享下实现的过程,也许是菜鸟专栏,高手勿喷~ 1.首先大家要了解各九宫格的概念 一个窗体可以被划分为上.下.左.右.左上.左下.右上.右下.中间,除了中间部分,其他都需要写程序处理.

Qt 无边框窗体改变大小 完美实现

近期,做项目用到无边框窗体,令人蛋疼的是无边框窗体大小的改变要像右边框那样,上下左右四周,而且要流畅. 网上也找了些代码,发现居然还要连接到windows事件,这显然不合常理,后来自己新建了demo,写了一个小时,问题太多了,扔一边先不管了. 今天需要改进UI界面,没办法了,重新整理了下思路,没想到做出来了.下面来分享下实现的过程,也许是菜鸟专栏,高手勿喷~ 1.首先大家要了解各九宫格的概念 一个窗体可以被划分为上.下.左.右.左上.左下.右上.右下.中间,除了中间部分,其他都需要写程序处理.

Qt图片自适应窗口控件大小(使用setScaledContents)

最近在用Qt设计一个小程序,想让一幅图片自适应窗口大小,由于本人比较笨,一直找不到好方法.找到了很多方法但都会出一些小问题, 刚刚摸索出解决办法了,在些记录. 思想: 1 显示图像是用QLabel2 在QWidget或其他窗口部件上显示(也可直接显示在窗口上,后面会说明为什么不) 现在问题就明朗了,主要就是调整QLabel大小随窗口大小自动变化. 使用方法: 1 在要显示的窗口放置一个QWidget,并使用用布局管理器(以便窗口可以规范布局) 2 在QWidget内放置QLabel ,位置为左上

Qt无边框,可移动窗口

QPoint dragPosition;void MainWindow::mousePressEvent(QMouseEvent *event){if(event->button()==Qt::LeftButton){dragPosition=event->globalPos()-frameGeometry().topLeft();event->accept();}}void MainWindow::mouseMoveEvent(QMouseEvent *event){if(event-

delphi 窗口最大化后控件的大小变化怎么设置

设置按钮的Anchors属性.可以通过此属性设置其边界是否随父类一起变化.默认akleft+aktop即左边界和上边界随窗口变化,也就是说如果窗口位置移动了,按钮将保持其left和top边界与窗口的距离. 例如你在窗口右下角放上一个按钮,设置Anchors的属性为[akRight+akBottom],则无论你窗口怎么调整,按钮一直保持在窗口右下角.(即保持右边界与下边界同窗口边界距离不变) 如果[akLeft+akTop+akRight+akBottom]全部加上,那按钮将会随着窗口的大小变化而

Qt无边框窗体-最大化时支持拖拽还原

目录 一.概述 二.效果展示 三.demo制作 1.设计窗体 2.双击放大 四.拖拽 五.相关文章 原文链接:Markdown模板 一.概述 用Qt进行开发界面时,既想要实现友好的用户交互又想界面漂亮,那么自定义界面就必不可少.其中有一个操作就是是我们每一个Qter开发者都要会的,而且是经常进行的. Qt::FramelessWindowHint这个属性想必大家都使用过,有些同学可能对这个属性很了解,也用的是炉火纯青,今天我们也来说说这个属性. 关于这个无边框属性网上也有一些文章,有些谈论的是b