最近,我希望当鼠标指针进入时,QListWidgetItem可以发出一个信号。显示一个QStackedWidget,离开时,隐藏QStackedWidget;我定义了一个类My_ListWidget;在类中,我重写了enterEvent和leaveEvent。但这是我悬停的QListWidget,而不是QListWidgetItem,它总是显示QStackedWidget的第一个。
发布于 2013-11-12 08:28:06
覆盖mouseMoveEvent并使用itemAt(event.pos())获取光标下的QListWidgetItem
编辑:不需要覆盖mouseEvent,您可以使用信号entered (它也会传递项端的ModelIndex ),然后使用leaveEvent清除堆叠的小部件,您需要激活mouseTracking才能工作。
发布于 2013-11-20 20:15:00
对我来说,我在通过itemAt获取这个项目时遇到了一些问题。子类QListWidget时,可以使用setMouseTracking(True)启用鼠标跟踪,并使用itemEntered和leaveEvent
class My_ListWidgetClass(QListWidget):
def __init__(self):
QListWidget.__init__(self)
self.setMouseTracking(True)
class Main(...):
def __init__(self):
self.centralWidget.connect( self.My_ListWidgetInstance,
SIGNAL('itemEntered(QListWidgetItem *)'),
self.whenItemEntered_doThis)
self.centralWidget.connect( self.My_ListWidgetInstance,
SIGNAL('leaveEvent(QEvent *)'),
self.whenItemLeft_doThis)
def whenItemEntered_doThis(self, QLWItem):
# you can apply behavior here according
# to the QListWidgetItem given as argument
# e. g. get itemtext (itemtext = str(QLWItem.text())
def whenItemLeft_doThis(self, Event):
# executed when an item was left
# unfortunatelly I can't explain, what you
# can do with the event. I didn't need it...https://stackoverflow.com/questions/19924003
复制相似问题