pyqt中,每一个事件类型都被封装成相应的事件类,如鼠标事件为QMouseEvent,键盘事件为QKeyEvent等。而它们的基类是QEvent。函数
accept() 表示事件已处理,不须要向父窗口传播spa
ignore()表示事件未处理,继续向父窗口传播fcode
type()返回事件类型,如QtCore.QEvent.MouseButtonPress,通常由基事件调用。由于其它事件已经知道本身的事件类型了。继承
还有一个自定义事件的注册方法。事件
buttons()返回哪一个鼠标按键被按住了。如Qt.LeftButtonget
globalPos()返回鼠标相对屏幕的位置QPointqt
pos()返回鼠标相对处理事件的窗口的位置it
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()