【Maya】QtでTreeWidgetなどでノード選択後にViewPortのショートカットが効かない

TreeWidget、ListWidgetなどで項目選択時にそのノードを選択する、って時々やりますよね?よね?

このとき、特に設定をしないと選択直後に「F」キーを押したりしても対象ノードにViewPortがフィットしません。
ので、この場合はMayaのメインウィンドウを一度クリックしたりしてから「F」を押す必要があります。
keyPressEventを乗っ取ったりしてなければCTRL+Fでうまくいったりもしますが、不親切感…😇

というわけで解決していきましょう。

具体的にはこんな感じのコードです。

(略)
    tree_widget = QtWidgets.QTreeWidget()
    tree_widget.itemClicked.connect(self._on_tree_item_clicked)
(略)
  def _on_tree_item_clicked(self, current, previous):
    cmds.select(current.text(0))

どうやらQTreeWidget自体にフォーカスが移ってしまうので、これによってViewPortのショートカットキーが効かない形になっていると思われます。
というわけでフォーカスのポリシーを変えてやりましょう。

tree_widget.setFocusPolicy(QtCore.Qt.NoFocus)

直りました!かんたん…!

スポンサーリンク