繁体   English   中英

如何在PyQt中为Qt-Designer小部件实现MousePressEvent

[英]How to implement MousePressEvent for a Qt-Designer Widget in PyQt

我有一个小部件(QTabeleWidget,QLabels和一些QButton)。 它是在Qt-Designer中构建的,现在我必须实现一些东西。 为此,我需要mousePressEvent。 通常,我会写一个子类并编写如下内容:

def mousePressEvent(self, event):
    if event.button() == Qt.LeftButton:
        print "left"
    else:
        print 'right'

但是我不知道如何对设计器中创建的小部件执行此操作。 我需要QTabeleWidget。 希望可以有人帮帮我。 我试图在Google的帮助下解决问题,但没有成功。 这个站点对我有很多帮助,所以我想我会试一试。

使用PyQt,可以使用三种不同的方法来处理在Designer中创建的表单:

  1. 使用单一继承并使表单成为成员变量
  2. 使用多重继承
  3. 直接从UI文件动态生成成员

单一继承

class MyTableWidget(QTableWidget):
    def __init__(self, parent, *args):
        super(MyTableWidget, self).__init__(parent, args)
        self.ui = YourFormName()
        self.ui.setupUi(self)
        # all gui elements are now accessed through self.ui
    def mousePressEvent(self, event):
        pass # do something useful

多重继承

class MyTableWidget(QTableWidget, YourFormName):
    def __init__(self, parent, *args):
        super(MyTableWidget, self).__init__(parent, args)
        self.setupUi(self)
        # self now has all members you defined in the form
    def mousePressEvent(self, event):
        pass # do something useful

动态生成

from PyQt4 import uic
yourFormTypeInstance = uic.loadUi('/path/to/your/file.ui')

对于上面的(3),您将最终得到一个为表单指定的基本类型的实例。 然后,您可以根据需要覆盖mousePressEvent

我建议您阅读PyQt4参考手册中的13.1节 第13.2节讨论uic模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM