2018年3月23日

FocusScope

モジュール

QtQuick 2.0

クラス継承

QQuickFocusScope → QQuickItem (FocusScope) → QObject

説明


主にコンポーネント化時に使われ、子オブジェクトのアクティブフォーカスを制御する。つまり、最後にアクティブフォーカスが与えられた子オブジェクトを覚え、フォーカスが与えられたときに最後にアクティブフォーカスが与えられた子オブジェクトにアクティブフォーカスを与える。

実際の動作は以降のようになる。FocusScope 内のオブジェクトで最後に focus が true になったものを覚える。FocusScope 外の他のオブジェクトの activeFocus が true になるとフォーカスが移動して FocusScope の focus と activeFocus はfalse になる。このとき FocusScope 内の最後に focus が true になったオブジェクトの focus は true のままを維持する。そして FocusScope の focusを true に設定するか forceActiveFocus() を呼び出すと、FocusScope 内で最後に focus が true になったオブジェクトの activeFocus を true にする。

FocusScope は Item を継承し Flag::ItemIsFocusScope フラグを立てただけである。このフラグは QML 側から操作できない。以下のタイプもこのフラグが設定されていて FocusScope と同じ動作をする。
Frame
GridView
GroupBox
ListView
Loader
Page
Pane
PathView
RangeSlider
ScrollView
SpinBox
StackView
SwipeView
TabBar
ToolBar

問題


リファレンス Keyboard Focus in Qt Quick の説明は間違いが多く、FocusScope の動作を適確に説明していないので、そのまま信用してはならない。

参考情報

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。