正在做的项目是在Label上显示图像, 并在鼠标悬停点击时做相应动作。
但PyQt5 QLabel本身只支持对超链接内容的click操作, 所以要重写QLabel类,添加我们想要的功能。
基本思路:基于QLabel本身的方法,在鼠标悬停、点击时发送signal,带出Label objectName,主窗口的槽函数做相应动作。
此方法不需要根据鼠标和Label的位置做判断,个人认为还是比较方便的。
代码如下: 只写了单击双击。鼠标悬停就是enter
from PyQt5.QtWidgets import QLabel
from PyQt5.QtCore import pyqtSignal
class MyLabel(QLabel):
mylabelSig = pyqtSignal(str)
mylabelDoubleClickSig = pyqtSignal(str)
def __int__(self):
super(MyLabel, self).__init__()
def mouseDoubleClickEvent(self, e): # 双击
sigContent = self.objectName()
self.mylabelDoubleClickSig.emit(sigContent)
def mousePressEvent(self, e): # 单击
sigContent = self.objectName()
self.mylabelSig.emit(sigContent)
def leaveEvent(self, e): # 鼠标离开label
print("leaveEvent")
def enterEvent(self, e): # 鼠标移入label
print("enterEvent")