7
votes

Qt liste déroulante qml comme dans html

chose simple, mais je ne peux pas le trouver. Je veux une simple boîte de sélection déroulante avec quelques sélections. Comme dans html xxx

Quel est le code pour qml pour cela?


1 commentaires

Aussi étrange que possible, il n'y a pas de "intégré" ComboBox dans QML. Vous devez vous construire vous-même en utilisant d'autres primitives. Il y a beaucoup d'exemples, cependant.


5 Réponses :


18
votes

Voici un exemple simple qui pourrait peut-être être utilisé comme point de départ: xxx


3 commentaires

Je n'ai qu'une chose étrange, j'ai quelques options (pour le moment 5). Et quand j'ai sélectionné l'option 3, je ne vois plus 1 et 2: s Qu'est-ce que je dois changer ????


SRR, n'a pas bien lu: P La ligne que j'ai dû supprimer les wasps listview.Currentindex = index; de la Mousearea. Très merci pour la pièce de code: P


Comment puis-je accéder à SemeleckIndex à partir de la sortie de fichier contenant ce code?



0
votes

Si vous ciblez des périphériques Nokia (Symbian ou MeeGo), vous pouvez utiliser des composants rapides QT de haut niveau. Je crois que Menu est quelque chose de similaire à celui de HTML SELECT .

voir http://doc.qt.nokia.com /qt-components-symbian/qml-menu.html ou http://harmattan-dev.nokia.com/docs/library/html/qt-components/qt-components-meego-menu.html


1 commentaires

Je veux le rendre compatible Censif possible pour toutes les plateformes, je vais donc coller avec celui-ci;)



0
votes

Si vous ciblez Symbian, il y a SelectionLisTem et SelectionDialog: http://doc.qt.nokia.com/qt-components -symbian / qml-selectionlistitem.html


1 commentaires

Je veux le rendre compatible Censif possible pour toutes les plateformes, je vais donc coller avec celui-ci;)



9
votes

Pour les nouveaux utilisateurs, il existe un Combobox code> dans qt5.3 qtquick.controls strong> combobox - référence .

Exemple de la documentation: P>

import QtQuick 2.2
import QtQuick.Controls 1.2

ComboBox {
  id: combo
  editable: true
  model: ListModel {
   id: model
   ListElement { text: "Banana"; color: "Yellow" }
   ListElement { text: "Apple"; color: "Green" }
   ListElement { text: "Coconut"; color: "Brown" }
 }
 onAccepted: {
  if (combo.find(currentText) === -1) {
     model.append({text: editText})
     currentIndex = combo.find(editText)
   }
 }
}


0 commentaires

1
votes

J'utilise des approches avec ComboBoxStyle (Capitalisation limitée) et entièrement personnalisées, mais ils ont beaucoup de limitations avec Focus Gestion et z -index gestion.

J'ai fini avec la mise en oeuvre de Combobox qui se compose de 2 parties: un en-tête que vous avez réellement mis quelque part et un composant déroulant que vous créez de manière dynamique. Ce dernier consiste en un élément couvrant tout (et interceptant l'activité de la souris) et une liste déroulante qui est soigneusement positionnée sous l'en-tête.

code est assez massif pour inclure ici pour que vous puissiez voir les détails dans mon Blogpost avec tout le code


2 commentaires

Bien que ce soit une publicité de blog sans vergogne, il semble que vous ayez répondu à ma question. Je n'utilise plus Qt, je ne peux donc pas tester votre code, mais cela semble prometteur. Je pense cependant que cela pourrait aider quelqu'un à l'avenir avec ce problème. Par conséquent, je ne signalerai pas votre réponse, car cela a un potentiel ;-)


@Mathlight Exemple de code est assez gros pour être inclus ici. Idée qui peut résoudre vos problèmes est expliquée dans ma réponse, donc si on possède une compétence QML, vous pouvez comprendre ce que j'ai écrit (sans aller à mon blog annoncé sans vergogne).