我想继承QLabel添加点击事件处理。 我正在尝试这段代码:
class NewLabel(QtGui.QLabel):
def __init__(self, parent):
QtGui.QLabel.__init__(self, parent)
def clickEvent(self, event):
print 'Label clicked!'
但点击后我没有'标签点击了'!
修改
好的,现在我使用的不是'clickEvent'而是'mousePressEvent'。我还有一个问题。我怎么知道点击了什么标签?例如,我有2个编辑框和2个标签。标签内容是pixmaps。所以标签中没有任何文字,所以我无法辨别标签之间的差异。我怎么能这样做?
EDIT2: 我做了这个代码:
class NewLabel(QtGui.QLabel):
def __init__(self, firstLabel):
QtGui.QLabel.__init__(self, firstLabel)
def mousePressEvent(self, event):
print 'Clicked'
#myLabel = self.sender() # None =)
self.emit(QtCore.SIGNAL('clicked()'), "Label pressed")
在另一堂课:
self.FirstLang = NewLabel(Form)
QtCore.QObject.connect(self.FirstLang, QtCore.SIGNAL('clicked()'), self.labelPressed)
同一类中的插槽:
def labelPressed(self):
print 'in labelPressed'
print self.sender()
但是自己没有发件人对象。我做错了什么?
答案 0 :(得分:1)
QWidget / QLabel中没有函数clickEvent
。您可以将该功能连接到Qt信号,或者您可以执行以下操作:
class NewLabel(QtGui.QLabel):
def __init__(self, parent=None):
QtGui.QLabel.__init__(self, parent)
self.setText('Lorem Ipsum')
def mouseReleaseEvent(self, event):
print 'Label clicked!'
答案 1 :(得分:1)
回答你的第二个问题,我将继续基于@gnud示例:
答案 2 :(得分:1)
PyQt Wiki的答案非常有效,但我想补充一点clickable
类应该调用widget.mouseReleaseEvent
(就在return True
之前),以防万一用户有定制此活动。