QT界面开发-(特效)整体可拖动的窗口
时间:2020-01-10
本文章向大家介绍QT界面开发-(特效)整体可拖动的窗口,主要包括QT界面开发-(特效)整体可拖动的窗口使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
转载自邵发《C/C++系列教程》Qt界面开发 https://chuanke.baidu.com/v4509752-209060-1284517.html
只有顶部一小条可以拖动
1 private: 2 virtual void mouseMoveEvent(QMouseEvent * event); 3 virtual void mousePressEvent(QMouseEvent * event); 4 virtual void mouseReleaseEvent(QMouseEvent * event); 5 6 bool m_dragging; // 是否正在拖动 7 QPoint m_startPosition; // 拖动开始前的鼠标位置 8 QPoint m_framePosition; // 窗体的原始位置 9 10 11 //写到ui.setupUi(this);下面 12 m_dragging = false; 13 14 // 不显示标题栏(亦无边框) 15 setWindowFlags(Qt::Window | Qt::FramelessWindowHint); 16 17 18 19 void TestAandB::mousePressEvent(QMouseEvent *event) 20 { 21 // 只响应左键 22 if (event->button() == Qt::LeftButton) 23 { 24 QRect titleRect = rect(); 25 titleRect.setBottom(titleRect.top() + 80); 26 27 if (titleRect.contains(event->pos())) 28 { 29 m_dragging = true; 30 m_startPosition = event->globalPos(); 31 m_framePosition = frameGeometry().topLeft(); 32 } 33 } 34 35 QWidget::mousePressEvent(event); 36 } 37 38 void TestAandB::mouseMoveEvent(QMouseEvent *event) 39 { 40 // 只响应左键 41 if (event->buttons() & Qt::LeftButton) 42 { 43 if (m_dragging) 44 { 45 // delta 相对偏移量, 46 QPoint delta = event->globalPos() - m_startPosition; 47 48 // 新位置:窗体原始位置 + 偏移量 49 move(m_framePosition + delta); 50 } 51 } 52 53 QWidget::mouseMoveEvent(event); 54 } 55 56 void TestAandB::mouseReleaseEvent(QMouseEvent * event) 57 { 58 m_dragging = false; 59 QWidget::mouseReleaseEvent(event); 60 }
全部可以拖动
1 void QTXiDaoPanJieMian1::mousePressEvent(QMouseEvent *event) 2 { 3 // 只响应左键 4 if (event->button() == Qt::LeftButton) 5 { 6 m_dragging = true; 7 m_startPosition = event->globalPos(); 8 m_framePosition = frameGeometry().topLeft(); 9 } 10 QWidget::mousePressEvent(event); 11 } 12 13 void QTXiDaoPanJieMian1::mouseMoveEvent(QMouseEvent *event) 14 { 15 // 只响应左键 16 if (event->buttons() & Qt::LeftButton) 17 { 18 if (m_dragging) 19 { 20 // delta 相对偏移量, 21 QPoint delta = event->globalPos() - m_startPosition; 22 23 // 新位置:窗体原始位置 + 偏移量 24 move(m_framePosition + delta); 25 } 26 } 27 QWidget::mouseMoveEvent(event); 28 } 29 30 void QTXiDaoPanJieMian1::mouseReleaseEvent(QMouseEvent * event) 31 { 32 // 结束dragging 33 m_dragging = false; 34 QWidget::mouseReleaseEvent(event); 35 }
原文地址:https://www.cnblogs.com/nxopen2018/p/12176486.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Maven Jar包制作与上传及基本使用
- 当你在`bind 0.0.0.0`的时候,你实际在做什么
- Hadoop Hive Hbase Kylin 环境搭建
- Spring MVC 学习
- RSeQC判断链特异性(strand-specific)
- bigWigMerge合并bigwig文件
- WPF桌面开发集成Nginx服务器
- chrome浏览器拦截(block)特定网站某些请求的方法
- 聊一聊:一道 Promise 链式调用的题目
- linux编译运行c++程序
- Python的运算符 (下)
- 深入理解JVM(③)Java的锁优化
- Spring 基于 Java 的配置 - 如何不用Beans.xml照样描述bean之间的依赖关系
- Spring 中的事件处理
- Vim安装插件管理器Vundle