pyqt5事件與鼠標事件


一,每個事件都被封裝成相應的類:

pyqt中,每個事件類型都被封裝成相應的事件類,如鼠標事件為QMouseEvent,鍵盤事件為QKeyEvent等。而它們的基類是QEvent。

二,基類QEvent的幾個重要方法:

accept() 表示事件已處理,不需要向父窗口傳播

ignore()表示事件未處理,繼續向父窗口傳播f

type()返回事件類型,如QtCore.QEvent.MouseButtonPress,一般由基事件調用。因為其它事件已經知道自己的事件類型了。

還有一個自定義事件的注冊方法。

三,QMouseEvent鼠標事件:

buttons()返回哪個鼠標按鍵被按住了。如Qt.LeftButton

globalPos()返回鼠標相對屏幕的位置QPoint

pos()返回鼠標相對處理事件的窗口的位置

四、處理鼠標事件的響應函數(在QWidget及其繼承類中):

mousePressEvent(QMouseEvent)

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM