我有一个小部件(QTabeleWidget,QLabels和一些QButton)。它是在Qt-Designer中构建的,现在我必须实现一些东西。为此,我需要mousePressEvent。
通常,我会写一个子类并编写如下内容:
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
print "left"
else:
print 'right'
但是我不知道如何对设计器中创建的小部件执行此操作。
我需要QTabeleWidget。希望可以有人帮帮我。我试图在Google的帮助下解决问题,但没有成功。
这个站点对我有很多帮助,所以我想我会试一试。
最佳答案
使用PyQt,可以使用三种不同的方法来处理在Designer中创建的表单:
使用单一继承并使表单成为成员变量
使用多重继承
直接从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
。我建议您看看section 13.1中的PyQt4 reference manual。 13.2节讨论了
uic
模块。关于python - 如何在PyQt中为Qt-Designer小部件实现MousePressEvent,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3539095/