pyqt5窗口去掉边框后无法移动
时间: 2023-07-05 17:13:51 浏览: 105
对PyQt5基本窗口控件 QMainWindow的使用详解
5星 · 资源好评率100%
当我们去掉 Pyqt5 窗口的边框时,窗口将失去默认的标题栏和边框,这意味着我们需要手动实现窗口的拖动功能。你可以通过重新实现鼠标按下、鼠标移动、鼠标释放等事件来实现窗口的拖动:
```python
from PyQt5.QtCore import Qt, QPoint
from PyQt5.QtWidgets import QMainWindow
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 去掉边框
self.setWindowFlags(Qt.FramelessWindowHint)
# 窗口初始位置
self.offset = None
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self.offset = event.pos()
def mouseMoveEvent(self, event):
if self.offset is not None:
# 移动窗口
self.move(self.pos() + event.pos() - self.offset)
def mouseReleaseEvent(self, event):
if event.button() == Qt.LeftButton:
self.offset = None
```
在上面的代码中,我们重载了 `mousePressEvent`、`mouseMoveEvent` 和 `mouseReleaseEvent` 三个事件,通过记录鼠标按下时的位置和鼠标移动时的偏移量来实现窗口的拖动。
阅读全文