QML Listview élément sélectionné, cliquez sur sélectionner sur la
Salut, je veux mettre ce code :
highlight: Rectangle {
color: "black"
radius: 5
opacity: 0.7
focus: true
}
en mouseArea dans le gestionnaire onclick:
MouseArea {
id: mouse_area1
z: 1
hoverEnabled: false
anchors.fill: parent
onClicked: {
}
C'est tout 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
}
}
Pour l'instant de souligner, c'est le fait de travailler uniquement lors de l'utilisation de flèches, bbut ce sera d'application pour android donc j'ai besoin de toucher le même effet, et la DEUXIÈME question est de savoir comment lire certaines données de l'élément sélectionné dans la vue liste?
À l'intérieur, j'ai comme id,nom,prénom,numéro et adresse.
Je veux mettre ces valeurs en text_input boîtes.
Merci
- J'ai trouvé la solution par moi-même: j'ai besoin d'ajouter cette ligne:
listview1.currentIndex = index
- denoth: j'ai créé votre indice comme réponse. C'est mieux parce que tout le monde peut voir votre question a été posée.
InformationsquelleAutor user123_456 | 2012-02-22
Vous devez vous connecter pour publier un commentaire.
Réponse fournie par denoth: Vous devez ajouter cette ligne:
Il semble que vous avez besoin de deux solutions à votre question:
ListView
lorsqu'il est cliquéLa Qt5 la documentation dit ceci à propos de
ListView
de la souris et de la touche de manutention:La saisie de la clé fonctionnera out-of-the-box, mais vous devez explicitement attraper la souris/événement tactile sur le délégué, et de changer le
ListView.currentIndex
valeur basée sur laindex
valeur de la délégué choisi par élément.Voici un exemple complet:
Il fait les choses suivantes:
MouseArea
élément dans l'élément délégué de mettre à jour l'ensemblelist.currentIndex = index
qui est un local var et unique pour l'élément sélectionnéonCurrentItemChanged
cas de laListView
de montrer comment accéder au modèle actuel de l'élément de valeursListView
offre dite "propriétés attachées", c'est à dire les propriétés disponibles dans ladelegate
pour la liste. Parmi euxListview.view
est une référence à la liste elle-même. Il peut être utilisé pour accéder àcurrentIndex
propriété et le mettre à jour. Par conséquent, pour résoudre votre problème simplement://id: contactDelegate
.contactDelegate.ListView.view.currentIndex = index
dans leOnClick
même gestionnaire.Plus simple que jamais, vous pouvez utiliser:
onCurrentItemChanged
Pour ceux qui utilisent mettant en évidence sur une ListView avec une hauteur spécifique (en cours: pas 100% de la hauteur rempli):
Veillez à activer la clip propriété de la liste, comme ailleurs le point culminant sera toujours visible en dehors de la liste de ses frontières pendant le défilement.
Comme expliqué ici:
Masquer le point culminant d'une ListView pendant le défilement