素材デザインを有効にしました(暗いテーマ)。ItemDelegateの背景とテキストの色を変更する
一部のチュートリアルでは、背景色のプロパティを使用して独自のRectangleアイテムをカスタムカラーで設定するように指示していました。このスクリーンショットのように:
しかし、この技術を使用して私はもうこれらの素敵な波及効果を持っていけません。私がしたいのは、すべてのアイテムの背景とテキストの色を変更することだけでした。
私は運のない背景のプロパティを変更しようとしました。起動時に、デバッグ出力はバックグラウンドでカラープロパティがないことを伝えました。
私はBindingsを使って "ハッキー"な方法を考え出しました...今、プロパティが存在します!
これは私の目標を達成する最善の方法ですか?リップル効果はクリックで表示されますが、私はこれで良い感じはありません。私はバインディングを使うときにそのプロパティがなぜ存在するのか理解できません。なぜなら、通常のデータバインディングを使用しているときにそれらが存在しない理由です。
ItemDelegate {
width: ListView.view.width
height: contentItem.implicitHeight + 10
topPadding: 5
bottomPadding: 5
highlighted: ListView.view.currentIndex === model.index
//background.color: highlighted ? "#81A3CF" : "#B3B2B2"
Binding {
target: background
property: "color"
value: highlighted ? "#81A3CF" : "#B3B2B2"
}
text: model.index + (highlighted ? " [highlighted]" : "")
//contentItem.color: "black"
Binding {
target: contentItem
property: "color"
value: "black"
}
onClicked: {
if(ListView.view.currentIndex === model.index)
ListView.view.currentIndex = -1;
else
ListView.view.currentIndex = model.index
}
}
ああ、私はバックグラウンドのためにBindingにとどまるので、強調表示されているためです。私は、強調された手段やonClickedイベントのように、自分自身でこのような基本的なことを実装していることは非常に悲しいです。そのようなものは図書館にとどまるべきだと確信しています。 –