0

最近,我希望 QListWidgetItem 可以在鼠标指针进入时发出信号。显示一个QStackedWidget,离开时隐藏QStackedWidget;我定义了一个 My_ListWidget 类;在类中,我覆盖了 enterEvent 和 leaveEvent。但这是我将 QListWidget 悬停在 QListWidgetItem 上,它总是显示第一个 QStackedWidget。

4

2 回答 2

3

覆盖mouseMoveEvent并抓住QListWidgetItem光标下的itemAt(event.pos())

编辑:您可以使用entered也将传递项目结束的 ModelIndex 的信号而不是覆盖 mouseEvent,然后使用 leaveEvent 清除堆叠的小部件,您需要激活 mouseTracking 才能工作

于 2013-11-12T08:28:06.393 回答
0

对我来说,我在通过itemAt. 子类化 QListWidget 时,您可以使用 setMouseTracking(True) 启用鼠标跟踪并使用itemEnteredleaveEvent

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 回答