大家都知道很多控件是没有clicked信号的,我在网上找了很多终于总结出2个方法来实现类似需求,比如给QLineEdit添加clicked信号,这样的话,当点击输入框时就会发送clicked信号,其它控件也是一样的做法,如下:
方法1:创建一个继承自QLineEdit的类,然后重写mousePressEvent。
class MyLineEdit(QLineEdit):
clicked = pyqtSignal()
def mouseReleaseEvent(self, QMouseEvent):
if QMouseEvent.button()==Qt.LeftButton:
self.clicked.emit()
方法2:重写eventFilter事件也可以达到类似的效果。
def eventFilter(self, widget, event):
if widget == self.edit:
if event.type() == QEvent.FocusOut:
pass
elif event.type() == QEvent.FocusIn:
self.clicked.emit() #当焦点再次落到edit输入框时,发送clicked信号出去
else:
pass
retur