最近,我希望 QListWidgetItem 可以在鼠标指针进入时发出信号。显示一个QStackedWidget,离开时隐藏QStackedWidget;我定义了一个 My_ListWidget 类;在类中,我覆盖了 enterEvent 和 leaveEvent。但这是我将 QListWidget 悬停在 QListWidgetItem 上,它总是显示第一个 QStackedWidget。
问问题
2225 次
2 回答
3
覆盖mouseMoveEvent
并抓住QListWidgetItem
光标下的itemAt(event.pos())
编辑:您可以使用entered
也将传递项目结束的 ModelIndex 的信号而不是覆盖 mouseEvent,然后使用 leaveEvent 清除堆叠的小部件,您需要激活 mouseTracking 才能工作
于 2013-11-12T08:28:06.393 回答
0
对我来说,我在通过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...
于 2013-11-20T20:15:00.367 回答