1

QTreeWidgetでマウスクリックが発生しないようです。私が試してみました...

  • ... mousePressEventをオーバーライドしますが、まったく実行されません。メッセージを記録することすらありません。
  • ...イベントファイラーを使用します。マウスクリック以外のすべてで機能します。
  • ...デリゲートを使用します。彼らのエディタイベントは正常に機能しますが、アイテムを超えた場合にのみ、十分ではありません
  • ...すべてがレイアウトに追加されていることを確認します。QTCreatorを使用し、出力はlayout.addWidget()を使用しています。メインウィンドウのレイアウトにウィジェットインスタンスも追加しています。

答えを使用して、ウィジェットをQTreeWidgetのイベントフィルターとして次のように登録することができました。

# In __init___
    # self.tree is the QTreeWidget
    self.tree.viewport().installEventFilter(self)



def eventFilter(self, target, event):
    """ 
    This widget is an event filter for the tree, so this function is triggered 
    automatically
    """
    # Print on right-click
    if (event.type() == QEvent.MouseButtonPress and 
        event.button() == Qt.RightButton):
        print("Right Click")

    # Don't block/accept the event
    return False
4

1 に答える 1

4

あなたが見ることができる(そしてクリックする)QTreeWidgetのは実際にはそれだからviewport()です。代わりに、イベントフィルターをインストールする必要がありますviewport()

于 2012-06-26T00:38:24.610 に答える