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

说明:如果一个窗体去边框后,又设置了透明背景,那么窗体本身就不能监测鼠标事件进行移动了。解决方法之一:在合适的位置,放置一个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. python textwrap_python2.7.3编译python模块学习- textwrap 文本包装和填充
  2. 视图插入数据_用EXCEL作数据分析--招聘信息
  3. 车辆动力性经济性 matlab计算
  4. Linux下文件开头的feff的问题
  5. python测试框架untest_Python测试框架之unittest和pytest
  6. I/O多路复用技术是什么?
  7. 如何用python做一个时钟_Python使用turtle库制作一个时钟
  8. linux安装好的mysql rpm -qa |grep mysql不见
  9. linux中文乱码问题
  10. 【thm】windows内网提权之Windows PrivEsc Arena
  11. 桌面HTML更换图标,系统图标替换教程,美化您的电脑图标
  12. linux IDEA 输入法光标不跟随
  13. 重磅消息集中来袭 A股再现“独立行情”?
  14. 计算机再带word打不开,电脑word文档打不开怎么办(附:4种解决办法)
  15. 倒计时,距离活动还有0天0时0分0秒
  16. Vpp源码解读--workhandoff处理
  17. 人机对话是怎么产生的?
  18. 【前端-Js基础方法】字符串常用方法汇总
  19. 实例讲解鼠绘上色技巧
  20. 线索二叉树存在的意义

热门文章

  1. 关于delphi中write,read,writeln和readln的用法
  2. unity柏林噪声生成2d随机地图
  3. System Calls [LKD 05]
  4. Vue加载中(Spin)
  5. VMware vcenter 6.0 (windwos 版本) 打开网页错误503
  6. RTX,腾讯通使用问题
  7. adobe flash创建按钮并添加动作【Z】
  8. [转载]J2ME潜艇大战游戏设计与实现
  9. 什么是Qi2?新无线充电标准解释
  10. Object-c 反射技术