私は自分のアプリケーションでフォーカスを適切に設定する方法を理解しようとしています。QMLフォーカスはどのように伝達されますか?
MyItem.qmlというコンポーネントがあります。これは、子がフォーカスを取得したときに背景を変更したいのです。私はMyItem.qmlから派生したMyDerivedItem.qmlも持っています.MyItem.qmlは、子がフォーカスを取得した場合に基本クラスの背景を変更する必要があります。
ドキュメントを正しく理解していれば、コンポーネントがフォーカスを取得すると、階層内のすべての親のフォーカスプロパティがtrue(またはFocusScopeコンポーネントに達するまで)に設定されます。
これが当てはまる場合、MyItem.qmlまたはMyDerivedItem.qmlのいずれかのTextFieldを押すと、myItem.focusプロパティがtrueに変更され、背景色が変更されます。
私は何をしたいのかという小さな例を作ろうとしましたが、期待通りに動作しません。
//main.qml
import QtQuick.Controls 2.0
ApplicationWindow {
height: 768
width: 1024
visible: true
MyDerivedItem {
anchors.top: parent.top
anchors.left: parent.left
anchors.bottom: parent.bottom
width: parent.width/2
}
MyDerivedItem {
anchors.top: parent.top
anchors.right: parent.right
anchors.bottom: parent.bottom
width: parent.width/2
}
}
//MyItem.qml
import QtQuick 2.7
import QtQuick.Controls 2.0
Rectangle {
id: myItem
default property alias data: column.data
color: focus ? "red" : "green"
Column {
id: column
TextField {
placeholderText: "Input Text Here"
}
}
}
//MyDerivedItem.qml
import QtQuick 2.7
import QtQuick.Controls 2.0
MyItem {
id: myDerivedItem
TextField {
placeholderText: "Derived Input Text Here"
}
TextField {
placeholderText: "Derived Input Text Here"
}
TextField {
placeholderText: "Derived Input Text Here"
}
TextField {
placeholderText: "Derived Input Text Here"
}
//...
}