了解无边框窗体的拖动和拉伸你需要了解以下的原理,看图:

了解了这个就好懂多了,直接看代码,我只实现了在右下角进行拖动,其他的部位原理可以实现
.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QMouseEvent>class MainWindow : public QMainWindow
{Q_OBJECTprotected:void mouseMoveEvent(QMouseEvent * event);void mousePressEvent(QMouseEvent *event);void mouseReleaseEvent(QMouseEvent * event);public:MainWindow(QWidget *parent = nullptr);~MainWindow();private:QPoint pLast;bool m_bPressed;QPoint clickPos;bool m_bresize=false;
};
#endif // MAINWINDOW_H

.cpp

#include "mainwindow.h"
#include <qdebug.h>void MainWindow::mouseMoveEvent(QMouseEvent *event)
{if (event->buttons() && Qt::LeftButton&&m_bPressed){move(event->globalPos() - pLast);event->accept();}if (isMaximized()){return;}int iWidth=this->width();int iHeight=this->height();if(event->pos().x()>iWidth-10&&event->pos().y()>iHeight-10){this->setCursor(Qt::SizeFDiagCursor);int width=this->width()-(this->width()-event->pos().x());int height=this->height()- (this->height()-event->pos().y());if(m_bresize==true){this->resize(width,height);qDebug()<<"ggggggg";}}else{this->setCursor(Qt::ArrowCursor);}}void MainWindow::mousePressEvent(QMouseEvent *event)
{int width=this->width();int height=this->height();if(event->pos().x()>width-10&&event->pos().y()>height-10&&event->buttons() == Qt::LeftButton){clickPos=event->pos();m_bresize=true;qDebug()<<"11111";}else{m_bPressed = true;pLast = event->globalPos() - this->pos();event->accept();qDebug()<<"2222";}}void MainWindow::mouseReleaseEvent(QMouseEvent *event)
{m_bPressed = false;m_bresize=false;
}MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{setWindowFlags(Qt::FramelessWindowHint | windowFlags());this->resize(500,500);this->setMouseTracking(true);
}MainWindow::~MainWindow()
{}

效果图:

ヾ( ̄▽ ̄)ByeBye

qt实现无边框窗体的拉伸和拖动(附原理)相关推荐

  1. 通过调用API函数实现的无边框窗体的拖拽,比判断坐标更快捷

    在winform程序中,有时会选择边框设计会none,但是这样就不能拖拽窗体移动 解决方案有二: 1,判断坐标控制拖拽 2.利用API函数, 下面介绍利用API函数,方便,快捷 #region 移动无 ...

  2. Qt无边框窗体(Windows)

    Qt无边框窗体Windows篇 去掉标题栏和边框 实现拖拽功能 还原窗体功能 注意点 我们可以做的更好 添加阴影 亚克力面板效果 结语 去掉标题栏和边框 首先第一步我们要通过设置系统绘制的边框消失 s ...

  3. QT无边框窗体改变大小 很顺畅

    近期,做项目用到无边框窗体,令人蛋疼的是无边框窗体大小的改变要像右边框那样,上下左右四周,而且要流畅. 网上也找了些代码,发现居然还要连接到windows事件,这显然不合常理,后来自己新建了demo, ...

  4. 无边框窗体和用户控件以及权限

    无边框窗体: 就是吧窗体的边框去掉,然后自己做按钮设置功能. 无边框窗体的移动: 将下面代码直接复制粘贴,将窗体的鼠标按下事件的方法改成下面方法的名字就可以直接使用 1 //窗体移动API 2 [Dl ...

  5. 再谈无边框窗体的操作

    本文介绍操作无边框窗体的其他几个方面的技巧. 设置浮动菜单 通常情况下,在无边框窗体中不能设置菜单.如果在无边框窗体中设置了菜单,运行时窗体上就会出现标题栏.那么,是否在无边框窗体中就不能使用菜单了呢 ...

  6. 无边框窗体移动的方法

    文章目录 1 无边框窗体移动的方法 1.1 无边框窗体移动的方法 1 无边框窗体移动的方法 1.1 无边框窗体移动的方法 当我们把窗体设置为无边框后,会发现用鼠标拖动窗体时是没有反应的,我们需要在窗体 ...

  7. 01.WPF中制作无边框窗体

    [引用:]http://blog.csdn.net/johnsuna/article/details/1893319 众所周知,在WinForm中,如果要制作一个无边框窗体,可以将窗体的FormBor ...

  8. 【C#】使用DWM实现无边框窗体阴影或全透窗体

    1.无边框窗体阴影,win7(需要开启Aero效果)及以上系统 public class LdwmForm : Form{public LdwmForm(){Initialize();}/// < ...

  9. 拖动无边框窗体(VB6代码)

    简单代码片段,记录一下备用. Option Explicit Dim mX As Long, mY As Long Private Sub Form_MouseDown(Button As Integ ...

  10. C# WinForm 无边框窗体,加阴影、拖动、改变大小等功能完美实现(自认为是完美的 ^=^)

    关于Winform的无边框窗体实现,网络上有很多大牛文章,这里不赘述.我也是参考网络上的思路,在使用别人的代码基础上,发现和遇到了很多小问题,所以做了改造,以下做个记录,也是给需要的人提供一点思路,如 ...

最新文章

  1. CCS V5 创建工程和配置软件仿真
  2. (0046) iOS开发之View的frame和bounds之解惑
  3. python 提取字符串中的数字
  4. 学习:ups电池放电时间是怎么计算的?
  5. 和硕看重物联网大势 程建中:从擅长领域出发
  6. flink source 同步_Flink面试题
  7. java代码内创建mysql索引_点评阿里JAVA手册之MySQL数据库 (建表规约、索引规约、SQL语句、ORM映射)...
  8. 拓端tecdat|ARIMA模型预测CO2浓度时间序列-python实现
  9. AE开发之鹰眼窗口、书签
  10. Mysql-多表查询
  11. Intel系列CPU架构的发展史
  12. 计算机应用研究所912,中国科学院计算技术研究所硕士生导师章隆兵
  13. 随机合并多个视频,同时更换背景音频
  14. 铂链获美国顶级区块链投资基金 Draper Dragon Digital Fund投资
  15. mipi摄像头linux,VS-RK3399 在linux系统下面调试Mipi camera接口介绍
  16. 中国科学院大学计算机分数线低,2018中国科学院大学录取分数线公布,能否冲击清北霸主地位?...
  17. tkinter学习笔记
  18. Redis分布式锁背后的原理
  19. 双弧脉冲 MIG 焊嵌入式控制系统设计及试验分析
  20. doxygen C++

热门文章

  1. Luogu1541[NOIp2010 TG] 乌龟棋
  2. .php on line 0,windows启动apache提示PHP Startup: in Unknown on line 0
  3. python pdf转txt_Python之pdf转txt
  4. 深圳php程序培训班,深圳php编程培训班哪几个好
  5. mysql新建数据库数据类型_数据库Mysql的学习(二)-数据类型和创建
  6. python选择排序算法_Python - 排序算法
  7. java excel通用导入类_java excel 文件导入通用接口
  8. netdevice - 底层访问 Linux 网络设备
  9. asp.net core 系列之并发冲突
  10. find ctime 加减n时间范围