我想要继承的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的标签。标签内容是映射.所以没有任何案文在标签,所以我不能辨别差异的标签。我怎么可以那样做?

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()

但是没有送对象中的自我。我做错了什么?

有帮助吗?

解决方案

回答你的第二个问题,我将继续根据@gnud例如:

  • 类QLabel,复盖mouseReleaseEvent,并添加一个信号给类,让我们叫它的点击。
  • 查查哪个按钮被点击在mouseReleaseEvent,如果这是左侧的一个发射击的信号。
  • 连接的老虎,你的标点击的信号和使用 发送者() 内知道哪QLabel是点击。

其他提示

有在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!'

PyQt的维基的作品非常好,但我想答案补充的是,clickable类应该调用widget.mouseReleaseEvent(右return True之前),以防万一用户定制此事件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top