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()