Je veux émettre un signal de fichier JavaScript et le recevoir dans le fichier QML (pour trouver lorsque l'opération de consommation de temps sera terminée). P>
Comment puis-je le faire? P>
3 Réponses :
merci, @rajavarma.
J'ai trouvé une solution pour moi-même. p>
dans qml-fichier strong>: créer un élément d'élément (mon loginitem) qui contient la fonction qui joue le Rôle de la fente.
Par exemple (j'ai besoin de savoir quand gérer l'événement de connexion): p> dans js-file strong>: créer un récepteur pour loginitem et l'utiliser. p>
non liée à la question mais c'est "connecté" non "enregistré";)
Je suis désolé pour mon anglais. Je promets de suivre le cours de langue ce mois-ci.
Ni les solutions de Nore Raja de Alex répondent vraiment à la question. Alex consiste à appeler directement à partir du code JavaScript la méthode Slot QML, et RAJA consiste à définir la valeur d'une propriété d'un objet QML à partir du code JavaScript. Les deux approches annulent l'avantage principal du mécanisme de signal / machine à sous qui est que l'objet de signalisation n'a pas besoin de connaître la fente.
Une approche plus proche de l'esprit du mécanisme de signal / machine à sous est décrit dans cet Blog post (pas le mien). Il consiste, dans le fichier JavaScript, de créer un objet QML (via la fonction Un exemple adapté de la poche blog est ci-dessous: P> JavaScript_Object. JS:
p> test.qml: p> sur l'exécution Il donne ce qui suit: p> qt.createqmlObject () code> fonction) dont la seule fonction est de contenir les signaux d'objets de JavaScript. Les signaux sont émis à partir de JavaScript en appelant le signal d'objets QML interne (par exemple,
internameqmlobject.signalName () code>) et le signal d'objet JavaScript peut être connecté dans les emplacements QML à QML avec le
Connecter habituel Code> Mécanisme via
JavaScriptObject.internalqmlobject.signalname.Connect (récepteur.slotname) code>. p>
Je suis d'accord. Bonne solution.
Eh bien, il est très hacky d'appeler des signaux d'un vrai fichier JS. Mais il y a une meilleure option, Imho, l'a utilisé à la place. Créez votre propre classe.
myClass.qml p> De cette façon, vous pouvez facilement obtenir l'encapsulation nécessaire. Et vous pouvez même se connecter bien à l'objet. P> Ensuite, vous pouvez faire ce que vous voulez avec elle: Créez un singleton à partir de celui-ci, créez un objet global, instancez-le. P> P>