pyside 无边框模式
时间: 2023-10-29 18:07:59 浏览: 180
pyside2靠屏幕边自动分屏、最大化的带阴影无边框窗口
5星 · 资源好评率100%
在 PySide 中,可以通过设置窗口的 Qt.WindowFlags 属性来实现无边框模式。具体步骤如下:
1. 在需要无边框的窗口类中,重写构造函数,并设置窗口的 Qt.WindowFlags 属性为 Qt.FramelessWindowHint,即:
```
class MyWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.setWindowFlags(Qt.FramelessWindowHint)
```
2. 在需要实现拖动窗口的功能时,需要重写鼠标按下、鼠标移动、鼠标释放三个事件,并在鼠标按下时记录当前鼠标位置,鼠标移动时计算移动距离并更新窗口位置,鼠标释放时清空记录的位置。具体代码如下:
```
class MyWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.setWindowFlags(Qt.FramelessWindowHint)
self.drag_position = None
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self.drag_position = event.globalPos() - self.frameGeometry().topLeft()
event.accept()
def mouseMoveEvent(self, event):
if self.drag_position is not None:
self.move(event.globalPos() - self.drag_position)
event.accept()
def mouseReleaseEvent(self, event):
self.drag_position = None
event.accept()
```
通过以上步骤,即可在 PySide 中实现无边框模式。
阅读全文