こんにちは私はこのコードを置きたい:
highlight: Rectangle {
color: "black"
radius: 5
opacity: 0.7
focus: true
}
onclickハンドラーのmouseAreaに:
MouseArea {
id: mouse_area1
z: 1
hoverEnabled: false
anchors.fill: parent
onClicked: {
}
これはすべてlistViewです:
ListView {
id: listview1
x: 0
y: 82
// width: 574
// height: 967
width: window.width
height: window.height
visible: true
keyNavigationWraps: false
boundsBehavior: Flickable.DragAndOvershootBounds
opacity: 1
maximumFlickVelocity: 2500
anchors.leftMargin: 0
highlightMoveSpeed: 489
contentWidth: 0
preferredHighlightEnd: 2
spacing: 5
highlightRangeMode: ListView.NoHighlightRange
snapMode: ListView.SnapToItem
anchors.bottomMargin: 0
anchors.rightMargin: 0
anchors.topMargin: 82
anchors.fill: parent
model: myModel
delegate:Component {
//id: contactDelegate
Item {
property variant myData: model
width: 574; height: 90
Column {
x: 12
y: 0
width: 562
height: 90
anchors.rightMargin: 0
anchors.bottomMargin: 0
anchors.leftMargin: 12
anchors.topMargin: 0
anchors.fill: parent
spacing: 2
Text { text: '<b>ID: </b> ' + id_user ; verticalAlignment: Text.AlignTop; wrapMode: Text.NoWrap; horizontalAlignment: Text.AlignHCenter; color:"steelblue"; font.family: "Helvetica"; font.pointSize: 10 }
Text { text: '<b>Name: </b> ' + user_name; horizontalAlignment: Text.AlignHCenter; color:"steelblue"; font.family: "Helvetica"; font.pointSize: 10 }
Text { text: '<b>Lastname: </b> ' + user_lastname; horizontalAlignment: Text.AlignHCenter; color:"steelblue"; font.family: "Helvetica"; font.pointSize: 10 }
Text { height: 16; text: '<b>Tel number: </b> ' + user_number; verticalAlignment: Text.AlignVCenter; horizontalAlignment: Text.AlignHCenter; color:"steelblue"; font.family: "Helvetica"; font.pointSize: 10 }
Text { text: '<b>Address: </b> ' + user address; horizontalAlignment: Text.AlignHCenter; color:"steelblue"; font.family: "Helvetica"; font.pointSize: 10 }
MouseArea {
id: mouse_area1
z: 1
hoverEnabled: false
anchors.fill: parent
onClicked:
Item
{
}
}
}
}
}
//delegate: contactDelegate
highlight: Rectangle
{
color:"black"
radius: 5
opacity: 0.7
focus: true
}
}
今のところハイライトは矢印を使用している場合にのみ機能しますが、これはAndroidのためのアプリになりますので、タッチで同じ効果が必要です。内部にはid、name、lastname、number、adressがあり、それらの値をtext_inputボックスに入れたいと思います。
ありがとうございました
denoth による回答:この行を追加する必要があります。
listview1.currentIndex = index
質問には2つの解決策が必要なようです。
ListView
の現在のアイテムを設定できるようにしたいQt5 documentation は、ListView
マウスとタッチ処理について次のように述べています。
ビューはコンテンツのドラッグとフリックを処理しますが、個々のデリゲートとのタッチ操作は処理しません。デリゲートがタッチ入力に反応するために、例えばcurrentIndexを設定するには、適切なタッチ処理ロジックを備えたMouseAreaがデリゲートによって提供される必要があります。
キー入力はそのまま使用できますが、デリゲートでマウス/タッチイベントを明示的にキャッチし、ListView.currentIndex
選択したデリゲートアイテムのindex
値に基づく値。
完全な例を次に示します。
import QtQuick 2.4
import QtQuick.Window 2.2
Window {
width: 640
height: 480
visible: true
ListModel {
id: model
ListElement {
name:'abc'
number:'123'
}
ListElement {
name:'efg'
number:'456'
}
ListElement {
name:'xyz'
number:'789'
}
}
ListView {
id: list
anchors.fill: parent
model: model
delegate: Component {
Item {
width: parent.width
height: 40
Column {
Text { text: 'Name:' + name }
Text { text: 'Number:' + number }
}
MouseArea {
anchors.fill: parent
onClicked: list.currentIndex = index
}
}
}
highlight: Rectangle {
color: 'grey'
Text {
anchors.centerIn: parent
text: 'Hello ' + model.get(list.currentIndex).name
color: 'white'
}
}
focus: true
onCurrentItemChanged: console.log(model.get(list.currentIndex).name + ' selected')
}
}
次のことを行います。
MouseArea
アイテムを使用して、list.currentIndex = index
これはローカル変数であり、選択されたアイテムに固有ですonCurrentItemChanged
のListView
イベントをリッスンして、現在のモデルアイテム値にアクセスする方法を示しますListView
は、いわゆる「 添付プロパティ 」、つまりリストのdelegate
で利用可能なプロパティを提供します。その中で Listview.view
はリスト自体への参照です。 currentIndex
プロパティにアクセスして更新するために使用できます。したがって、問題を解決するには:
//id: contactDelegate
。contactDelegate.ListView.view.currentIndex = index
OnClick
偶数ハンドラー。これまでにないほどシンプルに使用できます:onCurrentItemChanged
ListView{
id: listViewMainMenu
signal Myselect(int playmode)
onCurrentItemChanged: Myselect(listViewMainMenu.currentIndex)
// ...
}
特定の高さのListViewで強調表示を使用する場合(100%の高さではない):
ListViewの clip プロパティを有効にしてください。そうしないと、スクロール中にリストビューの境界線の外側にハイライトが表示されたままになります。
ListView
{
clip: true
}
ここで説明したように、 スクロール中はListViewのハイライトを非表示にします