前情回顾:
网盘下载地址:
一、隐藏标题栏setWindowFlags=放置寄存器 Qt.FramelessWindowHin=无边框窗口 [Python] 纯文本查看 复制代码 #在test(QWidget):中调用函数self.init_ui()
#初始化代码,并调用此代码
def init_ui(self):
self.setWindowFlags(Qt.FramelessWindowHint) #隐藏标题栏
二、自定义窗口移动installEventFilter=加载事件过滤器 QEvent.MouseButtonPress=鼠标按下事件 QEvent.MouseButtonRelease=鼠标释放事件 QEvent.MouseMove=鼠标移动事件 eventFilter()=事件过滤窗 event.type()=事件类型 event.globalPos()=全局位置 [Python] 纯文本查看 复制代码 #初始化代码,并调用此代码
def init_ui(self):
self.installEventFilter(self) #添加事件过滤窗
def eventFilter(self,obj,event) -> bool:
if obj is self:
if event.type() ==QEvent.MouseButtonPress:
print('鼠标按下')
self._old_pos = event.globalPos()
elif event.type() ==QEvent.MouseButtonRelease:
print('鼠标释放')
self._old_pos = None
elif event.type() ==QEvent.MouseMove:
print('鼠标移动')
self.mouse_move_event(event)
return super(test,self).eventFilter(obj,event)
def mouse_move_event(self,event):
if not self._old_pos: #但没有鼠标按下时返回掉
return
delta_x = event.globalPos().x() - self._old_pos.x() #计算鼠标按下和释放的偏移
delta_y = event.globalPos().y() - self._old_pos.y()
self.move(self.x() + delta_x,
self.y() + delta_y)
self._old_pos = event.globalPos()
pass
|