我有一个Widget(QTabeleWidget,QLabels和一些QButtons)。它是在Qt-Designer中构建的。现在我必须实施一些事情。为此,我需要mousePressEvent。 通常我会编写一个子类并写下这样的东西:
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
print "left"
else:
print 'right'
但是我不知道如何为在Designer中创建的Widget做到这一点。 我需要它用于QTabeleWidget。希望可以有人帮帮我。我试图在谷歌的帮助下解决问题,但没有成功。 这个网站帮我多次,所以我想我会试一试并问。
答案 0 :(得分:3)
使用PyQt,有三种不同的方法可以处理在设计器中创建的表单:
单一继承:
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
模块。