pyqt5事件与鼠标事件

一,每一个事件都被封装成相应的类:

pyqt中,每一个事件类型都被封装成相应的事件类,如鼠标事件为QMouseEvent,键盘事件为QKeyEvent等。而它们的基类是QEvent。函数

二,基类QEvent的几个重要方法:

accept() 表示事件已处理,不须要向父窗口传播spa

ignore()表示事件未处理,继续向父窗口传播fcode

type()返回事件类型,如QtCore.QEvent.MouseButtonPress,通常由基事件调用。由于其它事件已经知道本身的事件类型了。继承

还有一个自定义事件的注册方法。事件

三,QMouseEvent鼠标事件:

buttons()返回哪一个鼠标按键被按住了。如Qt.LeftButtonget

globalPos()返回鼠标相对屏幕的位置QPointqt

pos()返回鼠标相对处理事件的窗口的位置it

4、处理鼠标事件的响应函数(在QWidget及其继承类中):

mousePressEvent(QMouseEvent)io

mouseReleaseEvent(event)event

mouseMoveEvent(event)

# 事件。
"""重写鼠标事件,实现窗口拖动。"""
def mousePressEvent(self, event):
if event.buttons() == Qt.LeftButton:
self.setCursor(Qt.OpenHandCursor)
self.parent.m_drag = True
self.parent.m_DragPosition = event.globalPos()-self.parent.pos()
event.accept()

def mouseMoveEvent(self, event):
try:
if event.buttons() and Qt.LeftButton:
self.parent.move(event.globalPos()-self.parent.m_DragPosition)#move将窗口移动到指定位置
event.accept()
except AttributeError:
pass

def mouseReleaseEvent(self, event):

if event.button()==Qt.LeftButton:
self.m_drag = False
self.unsetCursor()
相关文章
相关标签/搜索