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()
相關文章
相關標籤/搜索