web-dev-qa-db-ja.com

QMLでアクティブフォーカスを持つオブジェクトは何ですか?

qMLを使用した複雑なGUIを使用していますが、状況によってはfocusを失い、どのオブジェクトにアクティブフォーカスがあるのか​​わかりません。

QMLファイルを検索してフォーカスされたオブジェクトを見つけるためのツールや方法はありますか?

この行を使用して、アクティブフォーカスがあるアイテムを確認します。

Window {
    onActiveFocusItemChanged: print("activeFocusItem", activeFocusItem)
}

このコードは、アクティブフォーカスでアイテムを出力することにより、activeFocusItemの-​​ Window プロパティの変更に応答します。 QtクイックコントロールのApplicationWindow12 は、Windowから派生しているため、同じプロパティを持ちます。


howアイテムがフォーカスされたことを確認するには、QT_LOGGING_RULES環境変数をqt.quick.focus = trueに設定します。これにより、Qtの内部フォーカス処理のロギングが可能になります。ただし、出力を追跡するのは少し難しい場合があります。

Qt Quick Controls 2を使用しているので、各コントロールには、コントロールがフォーカスを取得する方法を決定する focusPolicy プロパティがあることに注意してください。 ButtonのようなコントロールのデフォルトはQt.StrongFocusです。これは、ボタンがクリックまたはタブで移動された後にフォーカスを取得することを意味します。コントロールにフォーカスがあることがわかり、フォーカスを望まない場合は、そのfocusPolicyQt.NoFocusに設定するだけです。

focusPolicy: Qt.NoFocus
15
Mitch