2011-12-15 12 views
1

QTreeWidgetでツリー構造を作ったところ、うまくいきました。 しかし、私はそれに問題があります。 一般的に、ツリー構造ではすべてを選択解除したい場合は、ツリー領域の空白領域をクリックします。 QTreeWidgetはその作業をサポートしていません(またはチップが見つかりません)PyQt4:QTreeWidgetの空白領域のクリックを確認する

サブクラス化?または他の何かが問題を解決することができますか? 空白の領域をクリックすることが解決策の鍵に見えますが、SIGNALなどは見つかりません。

は、任意の助けをありがとう:)

答えて

1

をサブクラスは、おそらく最も簡単な選択肢(同じことは、イベントフィルタを用いて達成することができる)です。

このコード例では、空白の領域をクリックすると選択を解除、またはツリーウィジェットにキーボードフォーカスがあるとき、Escキーを押したときになります。

class TreeWidget(QTreeWidget): 
    ... 

    def keyPressEvent(self, event): 
     if (event.key() == Qt.Key_Escape and 
      event.modifiers() == Qt.NoModifier): 
      self.clearSelection() 
     else: 
      QTreeWidget.keyPressEvent(self, event) 

    def mousePressEvent(self, event): 
     if self.itemAt(event.pos()) is None: 
      self.clearSelection() 
     QTreeWidget.mousePressEvent(self, event) 
+0

はあなたのアドバイスをいただき、ありがとうございます。それはうまくいく!しかし、私は上記のスクリプトを少し修正しました... self.clearSelection()---> self.setCurrentItem(なし) clearSelectionメソッドはウィジェットを選択解除しますが、実際にはTreeWidgetにはcurrentItemがあります。だから、私は何も選択しなかった。 –

関連する問題