最近、マウスポインターが入ったときにQListWidgetItemがシグナルを発することができるようにしたいと思っています。QStackedWidget を表示し、離れると QStackedWidget を非表示にします。クラス My_ListWidget を定義しました。クラスでは、enterEvent と leaveEvent をオーバーライドします。しかし、これはQListWidgetItemではなくQListWidgetにカーソルを合わせると、常に最初のQStackedWidgetが表示されます。
質問する
2225 次
2 に答える
3
でカーソルの下をオーバーライドmouseMoveEvent
してグラブしますQListWidgetItem
itemAt(event.pos())
編集: mouseEvent をオーバーライドする代わりにentered
、アイテム end の ModelIndex も渡すシグナルを使用してから、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 に答える