zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    鸡兔同笼问题
    猴子吃桃问题
    Fibonacci_sequence(斐波那契数列)
    Joseph_Circle(约瑟夫环)
    学生成绩管理--功能全--较难
    各种排序
    二叉排序树操作--基本
    面向对象程序设计(多继承)--简单
    面向对象程序设计3--简单
    使用 ASR 和 Azure Pack 为 IaaS 工作负荷提供托受管 DR
  • 原文地址:https://www.cnblogs.com/zhuluqing/p/9028816.html
Copyright © 2011-2022 走看看