モジュール
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 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。