有时为了制作工具条,或者其他特殊美化需求,需要把窗体的边框去掉,但是边框去掉后窗体无法移动。接下来解决如何移动去掉边框后的窗体。

说明:如果一个窗体去边框后,又设置了透明背景,那么窗体本身就不能监测鼠标事件进行移动了。解决方法之一:在合适的位置,放置一个label控件,并且设置背景色,用来向窗体传递鼠标移动事件。


1、具体操作

(1)窗体去边框:
        self.setWindowFlags(Qt.FramelessWindowHint)  # 去边框

(2)重写这3个方法:
        mouseMoveEvent(self, e: QMouseEvent)  # 重写鼠标移动事件,根据鼠标的轨迹,移动窗体。
        mousePressEvent(self, e: QMouseEvent)  # 重写鼠标点击事件
        mouseReleaseEvent(self, e: QMouseEvent)  # 重写鼠标释放事件


2、测试代码

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *class TestWidget(QWidget):def __init__(self):super().__init__()self._startPos = Noneself._endPos = Noneself._tracking = Falseself.resize(240, 100)# 窗体置顶(窗体置顶,仅仅为了方便测试),去边框self.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint)# 窗体透明,控件不透明# self.setAttribute(Qt.WA_TranslucentBackground)label = QLabel("我是一个窗体,但我没有边框!!!", self)label.move(6, 6)def mouseMoveEvent(self, e: QMouseEvent):  # 重写移动事件if self._tracking:self._endPos = e.pos() - self._startPosself.move(self.pos() + self._endPos)def mousePressEvent(self, e: QMouseEvent):if e.button() == Qt.LeftButton:self._startPos = QPoint(e.x(), e.y())self._tracking = Truedef mouseReleaseEvent(self, e: QMouseEvent):if e.button() == Qt.LeftButton:self._tracking = Falseself._startPos = Noneself._endPos = Noneif __name__ == "__main__":app = QApplication(sys.argv)game = TestWidget()game.show()sys.exit(app.exec_())

3、效果

PyQt5 Qt 窗体去边框,去边框后可移动相关推荐

  1. table用在移动端,在安卓[小米note]手机上,默认的边框去不掉

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. Matlab去除外白边框

    有时候我们导出图片时会保留大量的白色边框,当附进word时需要自行裁剪,并且由于裁剪不均一会导致每一张图的比例不匀称使得排版不美观. 使用Matlab去除外白边框,通过如下代码实现: %去白边 cle ...

  3. 【最终版】PyQt5 自定义标题栏,实现无边框,最小化最大化关闭事件,窗口拖动移动,窗口改变大小,仿百度网盘色调美化,添加内容窗口

    [最终版]PyQt5 自定义标题栏,实现无边框,最小化最大化关闭事件,窗口拖动移动,窗口改变大小,仿百度网盘色调美化,添加内容窗口 文章目录 [最终版]PyQt5 自定义标题栏,实现无边框,最小化最大 ...

  4. PyQt5 自定义标题栏,实现无边框,最小化最大化关闭事件,窗口拖动移动,窗口改变大小,仿百度网盘色调美化

    PyQt5 自定义标题栏,实现无边框,最小化最大化关闭事件,窗口拖动移动,窗口改变大小,仿百度网盘色调美化 文章目录 PyQt5 自定义标题栏,实现无边框,最小化最大化关闭事件,窗口拖动移动,窗口改变 ...

  5. Roson的Qt之旅#54 Qt去掉程序默认按钮和边框(但依然可拖动和最大最小化)

    1.最终效果展示 2.Qt默认的程序框架介绍 当我们用QtDesigner打开ui文件的时候,可以看到下图,下图是一个QMainWindow的框架,它包含了:菜单栏,工具栏,中心区域,状态栏 接下来, ...

  6. (3.2)将分词和去停用词后的评论文本基于“环境、卫生、价格、服务”分类...

    酒店评论情感分析系统(三)-- 将分词和去停用词后的评论文本基于"环境.卫生.价格.服务"分类 思想: 将进行了中文分词和去停用词之后得到的词或短语按序存在一个数组(iniArra ...

  7. group by后可以join吗_去韩国留学毕业后可以留在韩国吗

    去韩国留学毕业后可以留在韩国吗 首先因为韩国不是一个移民国家,所以在移民政策以及对于外国人的就业政策上相对是比较严格的. 从毕业院校的角度来讲,就像中国清华北大毕业的学生找工作相对较为容易一样,在韩国 ...

  8. qt 全屏窗口有边框_如何在全屏无边框窗口模式下玩任何Windows游戏

    qt 全屏窗口有边框 If you're a regular PC gamer, you know that playing a game in full screen mode can someti ...

  9. Qt富文本 - 文档边框格式

    文档边框格式 新建桌面应用程序testRichText,基类QMainWindow,勾选创建界面文件,其他选择默认. 编辑mainwindow.cpp构造函数 mainwindow.h#ifndef ...

最新文章

  1. 07-图6 旅游规划 (25分)(以此感谢zyx佬)
  2. JS重复引用也会导致错误
  3. JSValidation 配置文件
  4. 微博收藏(机器学习探讨)(二)
  5. 这里有8个流行的Python可视化工具包,你喜欢哪个?
  6. weblogic启动方法
  7. springboot配置servlet容器的两种途径:配置文件及编码方式
  8. BZOJ3508 开灯 [校内NOIP2018模拟20181027] 密码锁
  9. view 注册服务器,view服务器ip地址
  10. UML模型中的图-行为图【交互图-序列图、协作图】
  11. UVA 125 Numbering Paths
  12. leetcode120. 三角形最小路径和(动态规划)
  13. C语言单元测试框架-cmocka示例
  14. Python 爬取 11 万 Java 程序员信息竟有这些重大发现!
  15. Linux | 如何通过Xshell上传文件到Linux
  16. swift 图片压缩
  17. SPSS——线性回归
  18. 关于计算机的猜谜游戏,益智猜谜电脑版
  19. GIF、SVG、PNG、图片格式转换
  20. 多线程面试题_线程魔术技巧:使用Java线程可以做的5件事

热门文章

  1. Ophir Juno激光功率计
  2. CreCloud云网管测试手记
  3. 二维码助力绿色生态环境的发展
  4. 使用计算机扬声器打电话,【IT之家干货店】教你用Win10连接iPhone,在电脑上接打电话、收发短信...
  5. dot画图的一点实践
  6. WordPress静态缓存插件WP Super Cache的使用方法
  7. 介绍三个开发技术小知识点
  8. Retina MBP的Windows虚拟机视网膜屏的显示效果问题总结
  9. H5新增语义化标签以及属性
  10. [zz] 腾讯云 AV1落地